]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fixed some Informix compat functions so they handle NULL resp. indicators better.
authorMichael Meskes <meskes@postgresql.org>
Wed, 9 Jul 2003 13:49:38 +0000 (13:49 +0000)
committerMichael Meskes <meskes@postgresql.org>
Wed, 9 Jul 2003 13:49:38 +0000 (13:49 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/compatlib/informix.c

index c42a6b2599f241aa405ed699b160124347c21888..93622d5142efab22a94a17196588451a8550dabc 100644 (file)
@@ -1563,6 +1563,12 @@ Tue Jul  8 12:34:00 CEST 2003
 
        - Made Informix decimal-ascii conversion honor Informix NULLs.
        - Informix variable handling didn't cope well with arrays.
+       
+Wed Jul  9 11:45:02 CEST 2003
+
+       - Made all Informix functions honor Informix NULLs.
+       - Extended compatibility functions for INFORMIX handling of DECLARE
+         statement to work with indicators.
        - Set ecpg version to 3.0.0
        - Set ecpg library to 4.0.0
        - Set pgtypes library to 1.0.0
index 985704393c9e27ccd9621e1c9fd29f6674fe87d3..d8bbd0d434e4bfc2195d2c9d93954bd7192bc37f 100644 (file)
@@ -55,6 +55,12 @@ deccall3(Decimal *arg1, Decimal *arg2, Decimal *result, int (*ptr)(Numeric *, Nu
        Numeric *a1, *a2, *nres;
        int i;
 
+       if (risnull(CDECIMALTYPE, (char *)arg1) || risnull(CDECIMALTYPE, (char *)arg2))
+       {
+               rsetnull(CDECIMALTYPE, (char *)result);
+               return 0;
+       }
+       
        if ((a1 = PGTYPESnumeric_new()) == NULL)
                return -1211;
        
@@ -191,6 +197,12 @@ deccvdbl(double dbl, Decimal *np)
        Numeric *nres = PGTYPESnumeric_new();
        int result = 1;
        
+       if (risnull(CDOUBLETYPE, (char *)&dbl))
+       {
+               rsetnull(CDECIMALTYPE, (char *)np);
+               return 0;
+       }
+
        if (nres == NULL)
                return -1211;
 
@@ -208,6 +220,12 @@ deccvint(int in, Decimal *np)
        Numeric *nres = PGTYPESnumeric_new();
        int result = 1;
        
+       if (risnull(CINTTYPE, (char *)&in))
+       {
+               rsetnull(CDECIMALTYPE, (char *)np);
+               return 0;
+       }
+
        if (nres == NULL)
                return -1211;
 
@@ -225,6 +243,12 @@ deccvlong(long lng, Decimal *np)
        Numeric *nres = PGTYPESnumeric_new();
        int result = 1;
        
+       if (risnull(CLONGTYPE, (char *)&lng))
+       {
+               rsetnull(CDECIMALTYPE, (char *)np);
+               return 0;
+       }
+
        if (nres == NULL)
                return -1211;