133{
134 switch(_valType) {
136 switch (_size) {
137 case sizeof(int8_t) : {
138 __data.i32 = (int32_t) * (int8_t*)_val;
139 __sqlvar->sqltype = ECPGt_int;
140 __sqlvar->sqllen = sizeof(int32_t);
141 __sqlvar->sqldata = (char*)&__data;
142 break;
143 }
144 case sizeof(int16_t) : {
145 __data.i32 = (int32_t) * (int16_t*)_val;
146 __sqlvar->sqltype = ECPGt_int;
147 __sqlvar->sqllen = sizeof(int32_t);
148 __sqlvar->sqldata = (char*)&__data;
149 break;
150 }
151 case sizeof(int32_t) : {
152 __data.i32 = *(int32_t*)_val;
153 __sqlvar->sqltype = ECPGt_int;
154 __sqlvar->sqllen = sizeof(int32_t);
155 __sqlvar->sqldata = (char*)&__data;
156 break;
157 }
158 case sizeof(int64_t) : {
159 __data.i64 = *(int64_t*)_val;
160#if ALIGNOF_LONG == 8
161 __sqlvar->sqltype = ECPGt_long;
162#else
163 __sqlvar->sqltype = ECPGt_long_long;
164#endif
165 __sqlvar->sqllen = sizeof(int64_t);
166 __sqlvar->sqldata = (char*)&__data;
167 break;
168 }
169 default: {
171 return false;
172 }
173 }
174 break;
175 }
177 switch (_size) {
178 case sizeof(uint8_t) : {
179 __data.i32 = (int32_t) * (uint8_t*)_val;
180 __sqlvar->sqltype = ECPGt_int;
181 __sqlvar->sqllen = sizeof(uint32_t);
182 __sqlvar->sqldata = (char*)&__data;
183 break;
184 }
185 case sizeof(uint16_t) : {
186 __data.i32 = (int32_t) * (uint16_t*)_val;
187 __sqlvar->sqltype = ECPGt_int;
188 __sqlvar->sqllen = sizeof(uint32_t);
189 __sqlvar->sqldata = (char*)&__data;
190 break;
191 }
192 case sizeof(uint32_t) : {
193 __data.i32 = (int32_t) * (uint32_t*)_val;
194 __sqlvar->sqltype = ECPGt_int;
195 __sqlvar->sqllen = sizeof(uint32_t);
196 __sqlvar->sqldata = (char*)&__data;
197 break;
198 }
199 case sizeof(uint64_t) : {
200 __data.i64 = (int64_t) * (uint64_t*)_val;
201#if ALIGNOF_LONG == 8
202 __sqlvar->sqltype = ECPGt_long;
203#else
204 __sqlvar->sqltype = ECPGt_long_long;
205#endif
206 __sqlvar->sqllen = sizeof(int64_t);
207 __sqlvar->sqldata = (char*)&__data;
208 break;
209 }
210 default: {
212 return false;
213 }
214 }
215 break;
216 }
218 switch (_size) {
219 case sizeof(float) : {
220 __data.f32 = *(float*)_val;
221 __sqlvar->sqltype = ECPGt_float;
222 __sqlvar->sqllen = sizeof(float);
223 __sqlvar->sqldata = (char*)&__data;
224 break;
225 }
226 case sizeof(double) : {
227 __data.f64 = *(double*)_val;
228 __sqlvar->sqltype = ECPGt_double;
229 __sqlvar->sqllen = sizeof(double);
230 __sqlvar->sqldata = (char*)&__data;
231 break;
232 }
233 default: {
235 return false;
236 }
237 }
238 break;
239 }
241 if (_size == sizeof(SQL::Date)) {
242 __encode((
const SQL::Date*)_val, &__data.dt);
243 __sqlvar->sqltype = ECPGt_date;
244 __sqlvar->sqllen = sizeof(date);
245 __sqlvar->sqldata = (char*)&__data;
246 }
247 else {
249 return false;
250 }
251 break;
252 }
254 if (_size == sizeof(SQL::Time)) {
255 __bytes =
__encode((
const SQL::Time*)_val);
256 __sqlvar->sqltype = ECPGt_char;
257 __sqlvar->sqllen = (short)__bytes.length();
258 __sqlvar->sqldata = (char*)__bytes.data();
259 }
260 else {
262 return false;
263 }
264 break;
265 }
267 if (_size == sizeof(SQL::TimeStamp)) {
268 const SQL::TimeStamp* p = (const SQL::TimeStamp*)_val;
269#if 0
272 return false;
273 }
274#endif
276 __sqlvar->sqltype = ECPGt_timestamp;
277 __sqlvar->sqllen = sizeof(timestamp);
278 __sqlvar->sqldata = (char*)&__data;
279 }
280 else {
282 return false;
283 }
284 break;
285 }
287 if (_size == sizeof(SQL::Interval)) {
288 __encode((
const SQL::Interval*)_val, &__data.ival);
289 __sqlvar->sqltype = ECPGt_interval;
290 __sqlvar->sqllen = sizeof(interval);
291 __sqlvar->sqldata = (char*)&__data;
292 }
293 else {
295 return false;
296 }
297 break;
298 }
301 if (_size > 0) {
302 numeric* p = PGTYPESnumeric_from_asc((
char*)_val,
NULL);
303 if (!p) {
305 return false;
306 }
307 PGTYPESnumeric_copy(p, &__data.nu);
308 __sqlvar->sqltype = ECPGt_numeric;
309 __sqlvar->sqllen = sizeof(numeric);
310 __sqlvar->sqldata = (char*)&__data;
311 }
312 else {
314 return false;
315 }
316 break;
317 }
318#if __TRACE_THIS && 1
320 _sqlType, _size);
322 String::tryString((const char*)_val, _size).data());
323#endif
324 }
326 switch (_sqlType) {
329 __sqlvar->sqltype = ECPGt_char;
330 __sqlvar->sqllen = (short) _size;
331 __sqlvar->sqldata = (char*) _val;
332 break;
333 }
336 __bytes = ByteString::toHexString(
337 (const char*)_val, _size, (size_t)-1, true);
340 return false;
341 }
342 __sqlvar->sqltype = ECPGt_char;
343 __sqlvar->sqllen = (short)__bytes.length();
344 __sqlvar->sqldata = (char*)__bytes.data();
345 break;
346 }
347 default: {
349 return false;
350 }
351 }
352 break;
353 }
355 try {
357 }
358 catch (IOException* e) {
361 return false;
362 }
365 return false;
366 }
367 __bytes = ByteString::toHexString(__bytes, (size_t)-1, true);
370 return false;
371 }
372 __sqlvar->sqltype = ECPGt_char;
373 __sqlvar->sqllen = (short) __bytes.length();
374 __sqlvar->sqldata = (char*)__bytes.data();
375 break;
376 }
377 default: {
379 return false;
380 }
381 }
382
383 __indicator = 0;
384 Param::__dataType = _sqlType;
385 return true;
386}
#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 *)