mirror of https://github.com/postgres/postgres
Patch done by Zoltán Böszörményi.REL9_0_ALPHA4_BRANCH
parent
63f9282f6e
commit
cedae13017
@ -0,0 +1,263 @@ |
||||
/* Processed by ecpg (regression mode) */ |
||||
/* These include files are added by the preprocessor */ |
||||
#include <ecpglib.h> |
||||
#include <ecpgerrno.h> |
||||
#include <sqlca.h> |
||||
/* End of automatic include section */ |
||||
#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y)) |
||||
|
||||
#line 1 "nan_test.pgc" |
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <math.h> |
||||
#include <pgtypes_numeric.h> |
||||
#include <decimal.h> |
||||
|
||||
|
||||
#line 1 "regression.h" |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#line 7 "nan_test.pgc" |
||||
|
||||
|
||||
int |
||||
main(void) |
||||
{ |
||||
/* exec sql begin declare section */ |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#line 13 "nan_test.pgc" |
||||
int id ; |
||||
|
||||
#line 14 "nan_test.pgc" |
||||
double d ; |
||||
|
||||
#line 15 "nan_test.pgc" |
||||
numeric * num ; |
||||
|
||||
#line 16 "nan_test.pgc" |
||||
char val [ 16 ] ; |
||||
/* exec sql end declare section */ |
||||
#line 17 "nan_test.pgc" |
||||
|
||||
|
||||
ECPGdebug(1, stderr); |
||||
/* exec sql whenever sqlerror do sqlprint ( ) ; */ |
||||
#line 20 "nan_test.pgc" |
||||
|
||||
|
||||
{ ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0);
|
||||
#line 22 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 22 "nan_test.pgc" |
||||
|
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table nantest1 ( id int4 , d float8 )", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 24 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 24 "nan_test.pgc" |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest1 ( id , d ) values ( 1 , 'nan' :: float8 ) , ( 2 , 'inf' :: float8 ) , ( 3 , '-inf' :: float8 )", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 25 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 25 "nan_test.pgc" |
||||
|
||||
|
||||
/* declare cur cursor for select id , d , d from nantest1 */ |
||||
#line 27 "nan_test.pgc" |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cur cursor for select id , d , d from nantest1", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 28 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 28 "nan_test.pgc" |
||||
|
||||
while (1) |
||||
{ |
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch from cur", ECPGt_EOIT,
|
||||
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_double,&(d),(long)1,(long)1,sizeof(double),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,(val),(long)16,(long)1,(16)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); |
||||
#line 31 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 31 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode) |
||||
break; |
||||
if (isinf(d)) |
||||
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val); |
||||
if (isnan(d)) |
||||
printf("%d NaN '%s'\n", id, val); |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest1 ( id , d ) values ( $1 + 3 , $2 )",
|
||||
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_double,&(d),(long)1,(long)1,sizeof(double),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); |
||||
#line 39 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 39 "nan_test.pgc" |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest1 ( id , d ) values ( $1 + 6 , $2 )",
|
||||
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,(val),(long)16,(long)1,(16)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); |
||||
#line 40 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 40 "nan_test.pgc" |
||||
|
||||
} |
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cur", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 42 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 42 "nan_test.pgc" |
||||
|
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cur cursor for select id , d , d from nantest1", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 44 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 44 "nan_test.pgc" |
||||
|
||||
while (1) |
||||
{ |
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch from cur", ECPGt_EOIT,
|
||||
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_double,&(d),(long)1,(long)1,sizeof(double),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,(val),(long)16,(long)1,(16)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); |
||||
#line 47 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 47 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode) |
||||
break; |
||||
if (isinf(d)) |
||||
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val); |
||||
if (isnan(d)) |
||||
printf("%d NaN '%s'\n", id, val); |
||||
} |
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cur", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 55 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 55 "nan_test.pgc" |
||||
|
||||
|
||||
num = PGTYPESnumeric_new(); |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table nantest2 ( id int4 , d numeric )", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 59 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 59 "nan_test.pgc" |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest2 ( id , d ) values ( 4 , 'nan' :: numeric )", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 60 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 60 "nan_test.pgc" |
||||
|
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select id , d , d from nantest2 where id = 4", ECPGt_EOIT,
|
||||
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_numeric,&(num),(long)1,(long)0,sizeof(numeric),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,(val),(long)16,(long)1,(16)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); |
||||
#line 62 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 62 "nan_test.pgc" |
||||
|
||||
|
||||
printf("%d %s '%s'\n", id, (num->sign == NUMERIC_NAN ? "NaN" : "not NaN"), val); |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest2 ( id , d ) values ( 5 , $1 )",
|
||||
ECPGt_numeric,&(num),(long)1,(long)0,sizeof(numeric),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); |
||||
#line 66 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 66 "nan_test.pgc" |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into nantest2 ( id , d ) values ( 6 , $1 )",
|
||||
ECPGt_char,(val),(long)16,(long)1,(16)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); |
||||
#line 67 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 67 "nan_test.pgc" |
||||
|
||||
|
||||
/* declare cur1 cursor for select id , d , d from nantest2 */ |
||||
#line 69 "nan_test.pgc" |
||||
|
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cur1 cursor for select id , d , d from nantest2", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 70 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 70 "nan_test.pgc" |
||||
|
||||
while (1) |
||||
{ |
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch from cur1", ECPGt_EOIT,
|
||||
ECPGt_int,&(id),(long)1,(long)1,sizeof(int),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_numeric,&(num),(long)1,(long)0,sizeof(numeric),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||
ECPGt_char,(val),(long)16,(long)1,(16)*sizeof(char),
|
||||
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); |
||||
#line 73 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 73 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode) |
||||
break; |
||||
printf("%d %s '%s'\n", id, (num->sign == NUMERIC_NAN ? "NaN" : "not NaN"), val); |
||||
} |
||||
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cur1", ECPGt_EOIT, ECPGt_EORT); |
||||
#line 78 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 78 "nan_test.pgc" |
||||
|
||||
|
||||
{ ECPGtrans(__LINE__, NULL, "rollback"); |
||||
#line 80 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 80 "nan_test.pgc" |
||||
|
||||
{ ECPGdisconnect(__LINE__, "CURRENT"); |
||||
#line 81 "nan_test.pgc" |
||||
|
||||
if (sqlca.sqlcode < 0) sqlprint ( );} |
||||
#line 81 "nan_test.pgc" |
||||
|
||||
|
||||
return (0); |
||||
} |
||||
@ -0,0 +1,360 @@ |
||||
[NO_PID]: ECPGdebug: set to 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ECPGconnect: opening database regress1 on <DEFAULT> port <DEFAULT> |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 24: query: create table nantest1 ( id int4 , d float8 ); with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 24: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 24: OK: CREATE TABLE |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 25: query: insert into nantest1 ( id , d ) values ( 1 , 'nan' :: float8 ) , ( 2 , 'inf' :: float8 ) , ( 3 , '-inf' :: float8 ); with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 25: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 25: OK: INSERT 0 3 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 28: query: declare cur cursor for select id , d , d from nantest1; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 28: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 28: OK: DECLARE CURSOR |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: 1 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: query: insert into nantest1 ( id , d ) values ( $1 + 3 , $2 ); with 2 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: using PQexecParams |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 39: parameter 1 = 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 39: parameter 2 = NaN |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: query: insert into nantest1 ( id , d ) values ( $1 + 6 , $2 ); with 2 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: using PQexecParams |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 40: parameter 1 = 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 40: parameter 2 = NaN |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: 2 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: query: insert into nantest1 ( id , d ) values ( $1 + 3 , $2 ); with 2 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: using PQexecParams |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 39: parameter 1 = 2 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 39: parameter 2 = Infinity |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: query: insert into nantest1 ( id , d ) values ( $1 + 6 , $2 ); with 2 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: using PQexecParams |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 40: parameter 1 = 2 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 40: parameter 2 = Infinity |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: 3 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: -Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 31: RESULT: -Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: query: insert into nantest1 ( id , d ) values ( $1 + 3 , $2 ); with 2 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: using PQexecParams |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 39: parameter 1 = 3 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 39: parameter 2 = -Infinity |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 39: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: query: insert into nantest1 ( id , d ) values ( $1 + 6 , $2 ); with 2 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: using PQexecParams |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 40: parameter 1 = 3 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 40: parameter 2 = -Infinity |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 40: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 31: correctly got 0 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: raising sqlcode 100 on line 31: no data found on line 31 |
||||
[NO_PID]: sqlca: code: 100, state: 02000 |
||||
[NO_PID]: ecpg_execute on line 42: query: close cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 42: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 42: OK: CLOSE CURSOR |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 44: query: declare cur cursor for select id , d , d from nantest1; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 44: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 44: OK: DECLARE CURSOR |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 1 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 2 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 3 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: -Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: -Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 4 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 7 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 5 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 8 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 6 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: -Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: -Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: 9 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: -Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 47: RESULT: -Infinity offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: query: fetch from cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 47: correctly got 0 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: raising sqlcode 100 on line 47: no data found on line 47 |
||||
[NO_PID]: sqlca: code: 100, state: 02000 |
||||
[NO_PID]: ecpg_execute on line 55: query: close cur; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 55: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 55: OK: CLOSE CURSOR |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 59: query: create table nantest2 ( id int4 , d numeric ); with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 59: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 59: OK: CREATE TABLE |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 60: query: insert into nantest2 ( id , d ) values ( 4 , 'nan' :: numeric ); with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 60: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 60: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 62: query: select id , d , d from nantest2 where id = 4; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 62: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 62: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 62: RESULT: 4 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 62: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 62: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 66: query: insert into nantest2 ( id , d ) values ( 5 , $1 ); with 1 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 66: using PQexecParams |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 66: parameter 1 = NaN |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 66: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 67: query: insert into nantest2 ( id , d ) values ( 6 , $1 ); with 1 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 67: using PQexecParams |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: free_params on line 67: parameter 1 = NaN |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 67: OK: INSERT 0 1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 70: query: declare cur1 cursor for select id , d , d from nantest2; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 70: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 70: OK: DECLARE CURSOR |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: query: fetch from cur1; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: 4 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: query: fetch from cur1; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: 5 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: query: fetch from cur1; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: correctly got 1 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: 6 offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_get_data on line 73: RESULT: NaN offset: -1; array: yes |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: query: fetch from cur1; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 73: correctly got 0 tuples with 3 fields |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: raising sqlcode 100 on line 73: no data found on line 73 |
||||
[NO_PID]: sqlca: code: 100, state: 02000 |
||||
[NO_PID]: ecpg_execute on line 78: query: close cur1; with 0 parameter(s) on connection regress1 |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 78: using PQexec |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_execute on line 78: OK: CLOSE CURSOR |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ECPGtrans on line 80: action "rollback"; connection "regress1" |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
[NO_PID]: ecpg_finish: connection regress1 closed |
||||
[NO_PID]: sqlca: code: 0, state: 00000 |
||||
@ -0,0 +1,16 @@ |
||||
1 NaN 'NaN' |
||||
2 +Inf 'Infinity' |
||||
3 -Inf '-Infinity' |
||||
1 NaN 'NaN' |
||||
2 +Inf 'Infinity' |
||||
3 -Inf '-Infinity' |
||||
4 NaN 'NaN' |
||||
7 NaN 'NaN' |
||||
5 +Inf 'Infinity' |
||||
8 +Inf 'Infinity' |
||||
6 -Inf '-Infinity' |
||||
9 -Inf '-Infinity' |
||||
4 NaN 'NaN' |
||||
4 NaN 'NaN' |
||||
5 NaN 'NaN' |
||||
6 NaN 'NaN' |
||||
@ -0,0 +1,84 @@ |
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#include <math.h> |
||||
#include <pgtypes_numeric.h> |
||||
#include <decimal.h> |
||||
|
||||
exec sql include ../regression; |
||||
|
||||
int |
||||
main(void) |
||||
{ |
||||
exec sql begin declare section; |
||||
int id; |
||||
double d; |
||||
numeric *num; |
||||
char val[16]; |
||||
exec sql end declare section; |
||||
|
||||
ECPGdebug(1, stderr); |
||||
exec sql whenever sqlerror do sqlprint(); |
||||
|
||||
exec sql connect to REGRESSDB1; |
||||
|
||||
exec sql create table nantest1 (id int4, d float8); |
||||
exec sql insert into nantest1 (id, d) values (1, 'nan'::float8), (2, 'inf'::float8), (3, '-inf'::float8); |
||||
|
||||
exec sql declare cur cursor for select id, d, d from nantest1; |
||||
exec sql open cur; |
||||
while (1) |
||||
{ |
||||
exec sql fetch from cur into :id, :d, :val; |
||||
if (sqlca.sqlcode) |
||||
break; |
||||
if (isinf(d)) |
||||
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val); |
||||
if (isnan(d)) |
||||
printf("%d NaN '%s'\n", id, val); |
||||
|
||||
exec sql insert into nantest1 (id, d) values (:id + 3, :d); |
||||
exec sql insert into nantest1 (id, d) values (:id + 6, :val); |
||||
} |
||||
exec sql close cur; |
||||
|
||||
exec sql open cur; |
||||
while (1) |
||||
{ |
||||
exec sql fetch from cur into :id, :d, :val; |
||||
if (sqlca.sqlcode) |
||||
break; |
||||
if (isinf(d)) |
||||
printf("%d %sInf '%s'\n", id, (d < 0 ? "-" : "+"), val); |
||||
if (isnan(d)) |
||||
printf("%d NaN '%s'\n", id, val); |
||||
} |
||||
exec sql close cur; |
||||
|
||||
num = PGTYPESnumeric_new(); |
||||
|
||||
exec sql create table nantest2 (id int4, d numeric); |
||||
exec sql insert into nantest2 (id, d) values (4, 'nan'::numeric); |
||||
|
||||
exec sql select id, d, d into :id, :num, :val from nantest2 where id = 4; |
||||
|
||||
printf("%d %s '%s'\n", id, (num->sign == NUMERIC_NAN ? "NaN" : "not NaN"), val); |
||||
|
||||
exec sql insert into nantest2 (id, d) values (5, :num); |
||||
exec sql insert into nantest2 (id, d) values (6, :val); |
||||
|
||||
exec sql declare cur1 cursor for select id, d, d from nantest2; |
||||
exec sql open cur1; |
||||
while (1) |
||||
{ |
||||
exec sql fetch from cur1 into :id, :num, :val; |
||||
if (sqlca.sqlcode) |
||||
break; |
||||
printf("%d %s '%s'\n", id, (num->sign == NUMERIC_NAN ? "NaN" : "not NaN"), val); |
||||
} |
||||
exec sql close cur1; |
||||
|
||||
exec sql rollback; |
||||
exec sql disconnect; |
||||
|
||||
return (0); |
||||
} |
||||
Loading…
Reference in new issue