126{
127 switch(_dataType) {
129 switch (_size) {
130 case sizeof(int8_t) : {
131 __data.i32 = (int32_t) * (int8_t*)_pv;
132 __sqlvar->sqltype = ECPGt_int;
133 __sqlvar->sqllen = sizeof(int32_t);
134 __sqlvar->sqldata = (char*)&__data;
135 break;
136 }
137 case sizeof(int16_t) : {
138 __data.i32 = (int32_t) * (int16_t*)_pv;
139 __sqlvar->sqltype = ECPGt_int;
140 __sqlvar->sqllen = sizeof(int32_t);
141 __sqlvar->sqldata = (char*)&__data;
142 break;
143 }
144 case sizeof(int32_t) : {
145 __data.i32 = *(int32_t*)_pv;
146 __sqlvar->sqltype = ECPGt_int;
147 __sqlvar->sqllen = sizeof(int32_t);
148 __sqlvar->sqldata = (char*)&__data;
149 break;
150 }
151 case sizeof(int64_t) : {
152 __data.i64 = *(int64_t*)_pv;
153#if ALIGNOF_LONG == 8
154 __sqlvar->sqltype = ECPGt_long;
155#else
156 __sqlvar->sqltype = ECPGt_long_long;
157#endif
158 __sqlvar->sqllen = sizeof(int64_t);
159 __sqlvar->sqldata = (char*)&__data;
160 break;
161 }
162 default: {
164 return false;
165 }
166 }
167 break;
168 }
170 switch (_size) {
171 case sizeof(uint8_t) : {
172 __data.i32 = (int32_t) * (uint8_t*)_pv;
173 __sqlvar->sqltype = ECPGt_int;
174 __sqlvar->sqllen = sizeof(uint32_t);
175 __sqlvar->sqldata = (char*)&__data;
176 break;
177 }
178 case sizeof(uint16_t) : {
179 __data.i32 = (int32_t) * (uint16_t*)_pv;
180 __sqlvar->sqltype = ECPGt_int;
181 __sqlvar->sqllen = sizeof(uint32_t);
182 __sqlvar->sqldata = (char*)&__data;
183 break;
184 }
185 case sizeof(uint32_t) : {
186 __data.i32 = (int32_t) * (uint32_t*)_pv;
187 __sqlvar->sqltype = ECPGt_int;
188 __sqlvar->sqllen = sizeof(uint32_t);
189 __sqlvar->sqldata = (char*)&__data;
190 break;
191 }
192 case sizeof(uint64_t) : {
193 __data.i64 = (int64_t) * (uint64_t*)_pv;
194#if ALIGNOF_LONG == 8
195 __sqlvar->sqltype = ECPGt_long;
196#else
197 __sqlvar->sqltype = ECPGt_long_long;
198#endif
199 __sqlvar->sqllen = sizeof(int64_t);
200 __sqlvar->sqldata = (char*)&__data;
201 break;
202 }
203 default: {
205 return false;
206 }
207 }
208 break;
209 }
211 switch (_size) {
212 case sizeof(float) : {
213 __data.f32 = *(float*)_pv;
214 __sqlvar->sqltype = ECPGt_float;
215 __sqlvar->sqllen = sizeof(float);
216 __sqlvar->sqldata = (char*)&__data;
217 break;
218 }
219 case sizeof(double) : {
220 __data.f64 = *(double*)_pv;
221 __sqlvar->sqltype = ECPGt_double;
222 __sqlvar->sqllen = sizeof(double);
223 __sqlvar->sqldata = (char*)&__data;
224 break;
225 }
226 default: {
228 return false;
229 }
230 }
231 break;
232 }
234 if (_size == sizeof(SQL::Date)) {
235 __encode((
const SQL::Date*)_pv, &__data.dt);
236 __sqlvar->sqltype = ECPGt_date;
237 __sqlvar->sqllen = sizeof(date);
238 __sqlvar->sqldata = (char*)&__data;
239 }
240 else {
242 return false;
243 }
244 break;
245 }
247 if (_size == sizeof(SQL::Time)) {
248 __bytes =
__encode((
const SQL::Time*)_pv);
249 __sqlvar->sqltype = ECPGt_char;
250 __sqlvar->sqllen = (short)__bytes.length();
251 __sqlvar->sqldata = (char*)__bytes.data();
252 }
253 else {
255 return false;
256 }
257 break;
258 }
260 if (_size == sizeof(SQL::TimeStamp)) {
261 const SQL::TimeStamp* p = (const SQL::TimeStamp*)_pv;
262#if 0
265 return false;
266 }
267#endif
269 __sqlvar->sqltype = ECPGt_timestamp;
270 __sqlvar->sqllen = sizeof(timestamp);
271 __sqlvar->sqldata = (char*)&__data;
272 }
273 else {
275 return false;
276 }
277 break;
278 }
280 if (_size == sizeof(SQL::Interval)) {
281 __encode((
const SQL::Interval*)_pv, &__data.ival);
282 __sqlvar->sqltype = ECPGt_interval;
283 __sqlvar->sqllen = sizeof(interval);
284 __sqlvar->sqldata = (char*)&__data;
285 }
286 else {
288 return false;
289 }
290 break;
291 }
294 if (_size > 0) {
295 numeric* p = PGTYPESnumeric_from_asc((
char*)_pv,
NULL);
296 if (!p) {
298 return false;
299 }
300 PGTYPESnumeric_copy(p, &__data.nu);
301 __sqlvar->sqltype = ECPGt_numeric;
302 __sqlvar->sqllen = sizeof(numeric);
303 __sqlvar->sqldata = (char*)&__data;
304 }
305 else {
307 return false;
308 }
309 break;
310 }
311#if __TRACE_THIS && 1
313 _dataType, _size);
315 String::tryString((const char*)_pv, _size).data());
316#endif
317 }
319 switch (_assignType) {
322 __sqlvar->sqltype = ECPGt_char;
323 __sqlvar->sqllen = (short) _size;
324 __sqlvar->sqldata = (char*) _pv;
325 break;
326 }
329 __bytes = ByteString::toHexString(
330 (const char*)_pv, _size, (size_t)-1, true);
333 return false;
334 }
335 __sqlvar->sqltype = ECPGt_char;
336 __sqlvar->sqllen = (short)__bytes.length();
337 __sqlvar->sqldata = (char*)__bytes.data();
338 break;
339 }
340 default: {
342 return false;
343 }
344 }
345 break;
346 }
348 try {
350 }
351 catch (IOException* e) {
354 return false;
355 }
358 return false;
359 }
360 __bytes = ByteString::toHexString(__bytes, (size_t)-1, true);
363 return false;
364 }
365 __sqlvar->sqltype = ECPGt_char;
366 __sqlvar->sqllen = (short) __bytes.length();
367 __sqlvar->sqldata = (char*)__bytes.data();
368 break;
369 }
370 default: {
372 return false;
373 }
374 }
375
376 __indicator = 0;
377 Param::__dataType = _assignType;
378 return true;
379}
#define __DCL_TRACE2_N(fmt, arg1, arg2)
#define __SET_ERROR_MSG(_message)
void __encode(const SQL::Date *_s, date *_r)
#define __SET_ERROR(_errorCode)
String toStringAll() const
static ByteString readBytes(InputStream &_input, size_t _n=(size_t) -1) __DCL_THROWS1(IOException *)