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

Optimize code for SQL_FLOAT col type.


diffs (39 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
@@ -586,6 +586,9 @@ odbc_query(mvc *sql, sql_subfunc *f, cha
                                GDKfree(colmetadata);
                                goto finish;
                        }
+                       if (dataType == SQL_FLOAT) {
+                               dataType = (columnSize == 7) ? SQL_REAL : 
SQL_DOUBLE;
+                       }
                        colmetadata[col].dataType = dataType;
                        colmetadata[col].columnSize = columnSize;
                        colmetadata[col].decimalDigits = decimalDigits;
@@ -680,7 +683,6 @@ odbc_query(mvc *sql, sql_subfunc *f, cha
 
                        for (SQLUSMALLINT col = 0; col < (SQLUSMALLINT) 
nr_cols; col++) {
                                SQLSMALLINT sqltype = colmetadata[col].dataType;
-                               int mtype = colmetadata[col].mtype;
                                BAT * b = colmetadata[col].bat;
                                SQLSMALLINT targetType;
                                SQLPOINTER * targetValuePtr;
@@ -731,7 +733,7 @@ odbc_query(mvc *sql, sql_subfunc *f, cha
                                                targetValuePtr = (SQLPOINTER *) 
&flt_val;
                                                break;
                                        case SQL_FLOAT:
-                                               if (mtype == TYPE_flt) {
+                                               if (colmetadata[col].mtype == 
TYPE_flt) {
                                                        targetType = 
SQL_C_FLOAT;
                                                        targetValuePtr = 
(SQLPOINTER *) &flt_val;
                                                } else {
@@ -874,7 +876,7 @@ odbc_query(mvc *sql, sql_subfunc *f, cha
                                                                gdkret = 
BUNappend(b, (void *) &dbl_val, false);
                                                                break;
                                                        case SQL_FLOAT:
-                                                               if (mtype == 
TYPE_flt) {
+                                                               if 
(colmetadata[col].mtype == TYPE_flt) {
                                                                        if 
(trace_enabled)
                                                                                
printf("Data row %lu col %u: %f\n", row, col+1, flt_val);
                                                                        gdkret 
= BUNappend(b, (void *) &flt_val, false);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to