Changeset: cd7e7c04f48e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cd7e7c04f48e
Modified Files:
        sql/backends/monet5/vaults/odbc/odbc_loader.c
Branch: Dec2025
Log Message:

The BAT properties were already initialized in bat_create(). No need to 
re-initialize them after the loop.
When we append an ATOMnilptr(b->ttype) we can set the property: b->tnil = true;


diffs (189 lines):

diff --git a/sql/backends/monet5/vaults/odbc/odbc_loader.c 
b/sql/backends/monet5/vaults/odbc/odbc_loader.c
--- a/sql/backends/monet5/vaults/odbc/odbc_loader.c
+++ b/sql/backends/monet5/vaults/odbc/odbc_loader.c
@@ -380,6 +380,8 @@ bat_create(int adt, BUN nr)
        b->tkey = false;
        b->tnokey[0] = 0;
        b->tnokey[1] = 0;
+       b->tnil = false;
+       b->tnonil = false;
        return b;
 }
 
@@ -1103,13 +1105,19 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                GDKfree(ODBCmsg);
 
                                        /* as all bats need to be the same 
length, append NULL value */
-                                       if (bunfastapp(b, ATOMnilptr(b->ttype)) 
!= GDK_SUCCEED)
+                                       gdkret = bunfastapp(b, 
ATOMnilptr(b->ttype));
+                                       if (gdkret != GDK_SUCCEED)
                                                TRC_ERROR(LOADER, 
"bunfastapp(b, ATOMnilptr(b->ttype)) failed after SQLGetData failed\n");
+                                       else
+                                               b->tnil = true;
                                } else {
                                        if (strLen == SQL_NULL_DATA) {
                                                TRC_DEBUG(LOADER, "Data row %lu 
col %u: NULL\n", row, (unsigned) col+1);
-                                               if (bunfastapp(b, 
ATOMnilptr(b->ttype)) != GDK_SUCCEED)
+                                               gdkret = bunfastapp(b, 
ATOMnilptr(b->ttype));
+                                               if (gdkret != GDK_SUCCEED)
                                                        TRC_ERROR(LOADER, 
"bunfastapp(b, ATOMnilptr(b->ttype)) failed for setting SQL_NULL_DATA\n");
+                                               else
+                                                       b->tnil = true;
                                        } else {
                                                switch(sqltype) {
                                                        case SQL_CHAR:
@@ -1143,6 +1151,7 @@ odbc_query(int caller, mvc *sql, sql_sub
 #endif
                                                                        default:
                                                                                
gdkret = bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                               
b->tnil = true;
                                                                                
break;
                                                                }
                                                                break;
@@ -1152,6 +1161,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &bit_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_TINYINT:
@@ -1160,6 +1170,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &bte_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_SMALLINT:
@@ -1168,6 +1179,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &sht_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_INTEGER:
@@ -1176,6 +1188,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &int_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_BIGINT:
@@ -1184,6 +1197,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &lng_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_DECIMAL:
@@ -1232,6 +1246,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                                
break;
                                                                        default:
                                                                                
gdkret = bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                               
b->tnil = true;
                                                                                
break;
                                                                }
                                                                break;
@@ -1241,6 +1256,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &flt_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_DOUBLE:
@@ -1249,6 +1265,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &dbl_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_FLOAT:
@@ -1261,6 +1278,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &flt_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_TYPE_DATE:
@@ -1271,6 +1289,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &mdate_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_TYPE_TIME:
@@ -1281,6 +1300,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &daytime_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_DATETIME:
@@ -1294,6 +1314,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &timestamp_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_INTERVAL_YEAR:
@@ -1321,6 +1342,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &int_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_INTERVAL_DAY:
@@ -1390,6 +1412,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &lng_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_GUID:
@@ -1409,6 +1432,7 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                        gdkret 
= bunfastapp(b, (void *) &u_val.uuid_val);
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                        case SQL_BINARY:
@@ -1430,9 +1454,11 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                                
GDKfree(blb);
                                                                        } else {
                                                                                
gdkret = bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                               
b->tnil = true;
                                                                        }
                                                                } else {
                                                                        gdkret 
= bunfastapp(b, ATOMnilptr(b->ttype));
+                                                                       b->tnil 
= true;
                                                                }
                                                                break;
                                                }
@@ -1446,14 +1472,6 @@ odbc_query(int caller, mvc *sql, sql_sub
                /* update the properties for each BAT */
                for (SQLUSMALLINT col = 0; col < (SQLUSMALLINT) nr_cols; col++) 
{
                        BAT * b = colmetadata[col].bat;
-                       b->tkey = false;
-                       b->tnonil = false;
-                       b->tnil = false;
-                       b->tsorted = false;
-                       b->trevsorted = false;
-                       b->tascii = false;
-                       b->tminpos = BUN_NONE;
-                       b->tmaxpos = BUN_NONE;
                        BATsettrivprop(b);
                }
 
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to