1 /* Processed by ecpg (regression mode) */ 2 /* These include files are added by the preprocessor */ 3 #include <ecpglib.h> 4 #include <ecpgerrno.h> 5 #include <sqlca.h> 6 /* End of automatic include section */ 7 #define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y)) 8 9 #line 1 "dt_test.pgc" 10 #include <stdio.h> 11 #include <string.h> 12 #include <stdlib.h> 13 #include <pgtypes_date.h> 14 #include <pgtypes_timestamp.h> 15 #include <pgtypes_interval.h> 16 17 18 #line 1 "regression.h" 19 20 21 main(void)22 23 24 25 #line 8 "dt_test.pgc" 26 27 28 int 29 main(void) 30 { 31 /* exec sql begin declare section */ 32 33 34 35 36 37 #line 14 "dt_test.pgc" 38 date date1 ; 39 40 #line 15 "dt_test.pgc" 41 timestamp ts1 ; 42 43 #line 16 "dt_test.pgc" 44 interval * iv1 , iv2 ; 45 46 #line 17 "dt_test.pgc" 47 char * text ; 48 /* exec sql end declare section */ 49 #line 18 "dt_test.pgc" 50 51 date date2; 52 int mdy[3] = { 4, 19, 1998 }; 53 char *fmt, *out, *in; 54 char *d1 = "Mon Jan 17 1966"; 55 char *t1 = "2000-7-12 17:34:29"; 56 int i; 57 58 ECPGdebug(1, stderr); 59 /* exec sql whenever sqlerror do sqlprint ( ) ; */ 60 #line 27 "dt_test.pgc" 61 62 { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); 63 #line 28 "dt_test.pgc" 64 65 if (sqlca.sqlcode < 0) sqlprint ( );} 66 #line 28 "dt_test.pgc" 67 68 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table date_test ( d date , ts timestamp )", ECPGt_EOIT, ECPGt_EORT); 69 #line 29 "dt_test.pgc" 70 71 if (sqlca.sqlcode < 0) sqlprint ( );} 72 #line 29 "dt_test.pgc" 73 74 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set datestyle to iso", ECPGt_EOIT, ECPGt_EORT); 75 #line 30 "dt_test.pgc" 76 77 if (sqlca.sqlcode < 0) sqlprint ( );} 78 #line 30 "dt_test.pgc" 79 80 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set intervalstyle to postgres_verbose", ECPGt_EOIT, ECPGt_EORT); 81 #line 31 "dt_test.pgc" 82 83 if (sqlca.sqlcode < 0) sqlprint ( );} 84 #line 31 "dt_test.pgc" 85 86 87 date1 = PGTYPESdate_from_asc(d1, NULL); 88 ts1 = PGTYPEStimestamp_from_asc(t1, NULL); 89 90 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into date_test ( d , ts ) values ( $1 , $2 )", 91 ECPGt_date,&(date1),(long)1,(long)1,sizeof(date), 92 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 93 ECPGt_timestamp,&(ts1),(long)1,(long)1,sizeof(timestamp), 94 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); 95 #line 36 "dt_test.pgc" 96 97 if (sqlca.sqlcode < 0) sqlprint ( );} 98 #line 36 "dt_test.pgc" 99 100 101 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from date_test where d = $1 ", 102 ECPGt_date,&(date1),(long)1,(long)1,sizeof(date), 103 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, 104 ECPGt_date,&(date1),(long)1,(long)1,sizeof(date), 105 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 106 ECPGt_timestamp,&(ts1),(long)1,(long)1,sizeof(timestamp), 107 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); 108 #line 38 "dt_test.pgc" 109 110 if (sqlca.sqlcode < 0) sqlprint ( );} 111 #line 38 "dt_test.pgc" 112 113 114 text = PGTYPESdate_to_asc(date1); 115 printf ("Date: %s\n", text); 116 PGTYPESchar_free(text); 117 118 text = PGTYPEStimestamp_to_asc(ts1); 119 printf ("timestamp: %s\n", text); 120 PGTYPESchar_free(text); 121 122 iv1 = PGTYPESinterval_from_asc("13556 days 12 hours 34 minutes 14 seconds ", NULL); 123 PGTYPESinterval_copy(iv1, &iv2); 124 text = PGTYPESinterval_to_asc(&iv2); 125 printf ("interval: %s\n", text); 126 PGTYPESinterval_free(iv1); 127 PGTYPESchar_free(text); 128 129 PGTYPESdate_mdyjul(mdy, &date2); 130 printf("m: %d, d: %d, y: %d\n", mdy[0], mdy[1], mdy[2]); 131 /* reset */ 132 mdy[0] = mdy[1] = mdy[2] = 0; 133 134 printf("date seems to get encoded to julian %ld\n", date2); 135 136 PGTYPESdate_julmdy(date2, mdy); 137 printf("m: %d, d: %d, y: %d\n", mdy[0], mdy[1], mdy[2]); 138 139 ts1 = PGTYPEStimestamp_from_asc("2003-12-04 17:34:29", NULL); 140 text = PGTYPEStimestamp_to_asc(ts1); 141 fmt = "(ddd), mmm. dd, yyyy, repeat: (ddd), mmm. dd, yyyy. end"; 142 out = (char*) malloc(strlen(fmt) + 1); 143 date1 = PGTYPESdate_from_timestamp(ts1); 144 PGTYPESdate_fmt_asc(date1, fmt, out); 145 printf("date_day of %s is %d\n", text, PGTYPESdate_dayofweek(date1)); 146 printf("Above date in format \"%s\" is \"%s\"\n", fmt, out); 147 PGTYPESchar_free(text); 148 free(out); 149 150 out = (char*) malloc(48); 151 i = PGTYPEStimestamp_fmt_asc(&ts1, out, 47, "Which is day number %j in %Y."); 152 printf("%s\n", out); 153 free(out); 154 155 156 /* rdate_defmt_asc() */ 157 158 date1 = 0; 159 fmt = "yy/mm/dd"; 160 in = "In the year 1995, the month of December, it is the 25th day"; 161 /* 0123456789012345678901234567890123456789012345678901234567890 162 * 0 1 2 3 4 5 6 163 */ 164 PGTYPESdate_defmt_asc(&date1, fmt, in); 165 text = PGTYPESdate_to_asc(date1); 166 printf("date_defmt_asc1: %s\n", text); 167 PGTYPESchar_free(text); 168 169 date1 = 0; 170 fmt = "mmmm. dd. yyyy"; 171 in = "12/25/95"; 172 PGTYPESdate_defmt_asc(&date1, fmt, in); 173 text = PGTYPESdate_to_asc(date1); 174 printf("date_defmt_asc2: %s\n", text); 175 PGTYPESchar_free(text); 176 177 date1 = 0; 178 fmt = "yy/mm/dd"; 179 in = "95/12/25"; 180 PGTYPESdate_defmt_asc(&date1, fmt, in); 181 text = PGTYPESdate_to_asc(date1); 182 printf("date_defmt_asc3: %s\n", text); 183 PGTYPESchar_free(text); 184 185 date1 = 0; 186 fmt = "yy/mm/dd"; 187 in = "1995, December 25th"; 188 PGTYPESdate_defmt_asc(&date1, fmt, in); 189 text = PGTYPESdate_to_asc(date1); 190 printf("date_defmt_asc4: %s\n", text); 191 PGTYPESchar_free(text); 192 193 date1 = 0; 194 fmt = "dd-mm-yy"; 195 in = "This is 25th day of December, 1995"; 196 PGTYPESdate_defmt_asc(&date1, fmt, in); 197 text = PGTYPESdate_to_asc(date1); 198 printf("date_defmt_asc5: %s\n", text); 199 PGTYPESchar_free(text); 200 201 date1 = 0; 202 fmt = "mmddyy"; 203 in = "Dec. 25th, 1995"; 204 PGTYPESdate_defmt_asc(&date1, fmt, in); 205 text = PGTYPESdate_to_asc(date1); 206 printf("date_defmt_asc6: %s\n", text); 207 PGTYPESchar_free(text); 208 209 date1 = 0; 210 fmt = "mmm. dd. yyyy"; 211 in = "dec 25th 1995"; 212 PGTYPESdate_defmt_asc(&date1, fmt, in); 213 text = PGTYPESdate_to_asc(date1); 214 printf("date_defmt_asc7: %s\n", text); 215 PGTYPESchar_free(text); 216 217 date1 = 0; 218 fmt = "mmm. dd. yyyy"; 219 in = "DEC-25-1995"; 220 PGTYPESdate_defmt_asc(&date1, fmt, in); 221 text = PGTYPESdate_to_asc(date1); 222 printf("date_defmt_asc8: %s\n", text); 223 PGTYPESchar_free(text); 224 225 date1 = 0; 226 fmt = "mm yy dd."; 227 in = "12199525"; 228 PGTYPESdate_defmt_asc(&date1, fmt, in); 229 text = PGTYPESdate_to_asc(date1); 230 printf("date_defmt_asc9: %s\n", text); 231 PGTYPESchar_free(text); 232 233 date1 = 0; 234 fmt = "yyyy fierj mm dd."; 235 in = "19951225"; 236 PGTYPESdate_defmt_asc(&date1, fmt, in); 237 text = PGTYPESdate_to_asc(date1); 238 printf("date_defmt_asc10: %s\n", text); 239 PGTYPESchar_free(text); 240 241 date1 = 0; 242 fmt = "mm/dd/yy"; 243 in = "122595"; 244 PGTYPESdate_defmt_asc(&date1, fmt, in); 245 text = PGTYPESdate_to_asc(date1); 246 printf("date_defmt_asc12: %s\n", text); 247 PGTYPESchar_free(text); 248 249 PGTYPEStimestamp_current(&ts1); 250 text = PGTYPEStimestamp_to_asc(ts1); 251 /* can't output this in regression mode */ 252 /* printf("timestamp_current: Now: %s\n", text); */ 253 PGTYPESchar_free(text); 254 255 ts1 = PGTYPEStimestamp_from_asc("96-02-29", NULL); 256 text = PGTYPEStimestamp_to_asc(ts1); 257 printf("timestamp_to_asc1: %s\n", text); 258 PGTYPESchar_free(text); 259 260 ts1 = PGTYPEStimestamp_from_asc("1994-02-11 3:10:35", NULL); 261 text = PGTYPEStimestamp_to_asc(ts1); 262 printf("timestamp_to_asc2: %s\n", text); 263 PGTYPESchar_free(text); 264 265 ts1 = PGTYPEStimestamp_from_asc("1994-02-11 26:10:35", NULL); 266 text = PGTYPEStimestamp_to_asc(ts1); 267 printf("timestamp_to_asc3: %s\n", text); 268 PGTYPESchar_free(text); 269 270 /* abc-03:10:35-def-02/11/94-gh */ 271 /* 12345678901234567890123456789 */ 272 273 out = (char*) malloc(32); 274 i = PGTYPEStimestamp_fmt_asc(&ts1, out, 31, "abc-%X-def-%x-ghi%%"); 275 printf("timestamp_fmt_asc: %d: %s\n", i, out); 276 free(out); 277 278 fmt = "This is a %m/%d/%y %H-%Ml%Stest"; 279 in = "This is a 4/12/80 3-39l12test"; 280 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 281 text = PGTYPEStimestamp_to_asc(ts1); 282 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 283 PGTYPESchar_free(text); 284 285 fmt = "%a %b %d %H:%M:%S %z %Y"; 286 in = "Tue Jul 22 17:28:44 +0200 2003"; 287 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 288 text = PGTYPEStimestamp_to_asc(ts1); 289 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 290 PGTYPESchar_free(text); 291 292 fmt = "%a %b %d %H:%M:%S %z %Y"; 293 in = "Tue Feb 29 17:28:44 +0200 2000"; 294 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 295 text = PGTYPEStimestamp_to_asc(ts1); 296 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 297 PGTYPESchar_free(text); 298 299 fmt = "%a %b %d %H:%M:%S %z %Y"; 300 in = "Tue Feb 29 17:28:44 +0200 1900"; 301 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 302 text = PGTYPEStimestamp_to_asc(ts1); 303 printf("timestamp_defmt_asc(%s, %s) = %s, error (should be error!): %d\n", in, fmt, text, i); 304 PGTYPESchar_free(text); 305 306 fmt = "%a %b %d %H:%M:%S %z %Y"; 307 in = "Tue Feb 29 17:28:44 +0200 1996"; 308 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 309 text = PGTYPEStimestamp_to_asc(ts1); 310 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 311 PGTYPESchar_free(text); 312 313 fmt = "%b %d %H:%M:%S %z %Y"; 314 in = " Jul 31 17:28:44 +0200 1996"; 315 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 316 text = PGTYPEStimestamp_to_asc(ts1); 317 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 318 PGTYPESchar_free(text); 319 320 fmt = "%b %d %H:%M:%S %z %Y"; 321 in = " Jul 32 17:28:44 +0200 1996"; 322 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 323 text = PGTYPEStimestamp_to_asc(ts1); 324 printf("timestamp_defmt_asc(%s, %s) = %s, error (should be error!): %d\n", in, fmt, text, i); 325 PGTYPESchar_free(text); 326 327 fmt = "%a %b %d %H:%M:%S %z %Y"; 328 in = "Tue Feb 29 17:28:44 +0200 1997"; 329 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 330 text = PGTYPEStimestamp_to_asc(ts1); 331 printf("timestamp_defmt_asc(%s, %s) = %s, error (should be error!): %d\n", in, fmt, text, i); 332 PGTYPESchar_free(text); 333 334 fmt = "%"; 335 in = "Tue Jul 22 17:28:44 +0200 2003"; 336 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 337 text = PGTYPEStimestamp_to_asc(ts1); 338 printf("timestamp_defmt_asc(%s, %s) = %s, error (should be error!): %d\n", in, fmt, text, i); 339 PGTYPESchar_free(text); 340 341 fmt = "a %"; 342 in = "Tue Jul 22 17:28:44 +0200 2003"; 343 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 344 text = PGTYPEStimestamp_to_asc(ts1); 345 printf("timestamp_defmt_asc(%s, %s) = %s, error (should be error!): %d\n", in, fmt, text, i); 346 PGTYPESchar_free(text); 347 348 fmt = "%b, %d %H_%M`%S %z %Y"; 349 in = " Jul, 22 17_28 `44 +0200 2003 "; 350 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 351 text = PGTYPEStimestamp_to_asc(ts1); 352 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 353 PGTYPESchar_free(text); 354 355 fmt = "%a %b %%%d %H:%M:%S %Z %Y"; 356 in = "Tue Jul %22 17:28:44 CEST 2003"; 357 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 358 text = PGTYPEStimestamp_to_asc(ts1); 359 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 360 PGTYPESchar_free(text); 361 362 fmt = "%a %b %%%d %H:%M:%S %Z %Y"; 363 in = "Tue Jul %22 17:28:44 CEST 2003"; 364 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 365 text = PGTYPEStimestamp_to_asc(ts1); 366 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 367 PGTYPESchar_free(text); 368 369 fmt = "abc%n %C %B %%%d %H:%M:%S %Z %Y"; 370 in = "abc\n 19 October %22 17:28:44 CEST 2003"; 371 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 372 text = PGTYPEStimestamp_to_asc(ts1); 373 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 374 PGTYPESchar_free(text); 375 376 fmt = "abc%n %C %B %%%d %H:%M:%S %Z %y"; 377 in = "abc\n 18 October %34 17:28:44 CEST 80"; 378 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 379 text = PGTYPEStimestamp_to_asc(ts1); 380 printf("timestamp_defmt_asc(%s, %s) = %s, error (should be error!): %d\n", in, fmt, text, i); 381 PGTYPESchar_free(text); 382 383 fmt = ""; 384 in = "abc\n 18 October %34 17:28:44 CEST 80"; 385 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 386 text = PGTYPEStimestamp_to_asc(ts1); 387 printf("timestamp_defmt_asc(%s, %s) = %s, error (should be error!): %d\n", in, fmt, text, i); 388 PGTYPESchar_free(text); 389 390 fmt = NULL; 391 in = "1980-04-12 3:49:44 "; 392 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 393 text = PGTYPEStimestamp_to_asc(ts1); 394 printf("timestamp_defmt_asc(%s, NULL) = %s, error: %d\n", in, text, i); 395 PGTYPESchar_free(text); 396 397 fmt = "%B %d, %Y. Time: %I:%M%p"; 398 in = "July 14, 1988. Time: 9:15am"; 399 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 400 text = PGTYPEStimestamp_to_asc(ts1); 401 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 402 PGTYPESchar_free(text); 403 404 in = "September 6 at 01:30 pm in the year 1983"; 405 fmt = "%B %d at %I:%M %p in the year %Y"; 406 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 407 text = PGTYPEStimestamp_to_asc(ts1); 408 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 409 PGTYPESchar_free(text); 410 411 in = " 1976, July 14. Time: 9:15am"; 412 fmt = "%Y, %B %d. Time: %I:%M %p"; 413 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 414 text = PGTYPEStimestamp_to_asc(ts1); 415 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 416 PGTYPESchar_free(text); 417 418 in = " 1976, July 14. Time: 9:15 am"; 419 fmt = "%Y, %B %d. Time: %I:%M%p"; 420 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 421 text = PGTYPEStimestamp_to_asc(ts1); 422 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 423 PGTYPESchar_free(text); 424 425 in = " 1976, P.M. July 14. Time: 9:15"; 426 fmt = "%Y, %P %B %d. Time: %I:%M"; 427 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 428 text = PGTYPEStimestamp_to_asc(ts1); 429 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 430 PGTYPESchar_free(text); 431 432 in = "1234567890"; 433 fmt = "%s"; 434 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 435 text = PGTYPEStimestamp_to_asc(ts1); 436 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, text, i); 437 PGTYPESchar_free(text); 438 439 out = (char*) malloc(64); 440 fmt = "%a %b %d %H:%M:%S %Y"; 441 in = "Mon Dec 30 17:28:44 2019"; 442 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 443 i = PGTYPEStimestamp_fmt_asc(&ts1, out, 63, fmt); 444 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, out, i); 445 free(out); 446 447 out = (char*) malloc(64); 448 fmt = "%a %b %d %H:%M:%S %Y"; 449 in = "Mon December 30 17:28:44 2019"; 450 i = PGTYPEStimestamp_defmt_asc(in, fmt, &ts1); 451 i = PGTYPEStimestamp_fmt_asc(&ts1, out, 63, fmt); 452 printf("timestamp_defmt_asc(%s, %s) = %s, error: %d\n", in, fmt, out, i); 453 free(out); 454 455 { ECPGtrans(__LINE__, NULL, "rollback"); 456 #line 381 "dt_test.pgc" 457 458 if (sqlca.sqlcode < 0) sqlprint ( );} 459 #line 381 "dt_test.pgc" 460 461 { ECPGdisconnect(__LINE__, "CURRENT"); 462 #line 382 "dt_test.pgc" 463 464 if (sqlca.sqlcode < 0) sqlprint ( );} 465 #line 382 "dt_test.pgc" 466 467 468 return 0; 469 } 470