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

Fix conversion of SQL_GUID value to internal UUID value for big-endian.


diffs (38 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
@@ -1262,25 +1262,15 @@ odbc_query(int caller, mvc *sql, sql_sub
                                                                                
guid_val.Data1, guid_val.Data2, guid_val.Data3, guid_val.Data4[0], 
guid_val.Data4[1], guid_val.Data4[2],
                                                                                
guid_val.Data4[3], guid_val.Data4[4], guid_val.Data4[5], guid_val.Data4[6], 
guid_val.Data4[7]);
                                                                if 
(colmetadata[col].battype == TYPE_uuid) {
-                                                                       uint8_t 
u;
-                                                                       // uuid 
is 16 bytes, same as SQLGUID guid_val
-                                                                       
memcpy((void *) &u_val.uuid_val, (void *) &guid_val, sizeof(uuid));
-                                                                       // 
guid_str: beefc4f7-0264-4735-9b7a-75fd371ef803
-                                                                       // 
becomes
-                                                                       // 
uuid_str: f7c4efbe-6402-3547-9b7a-75fd371ef803
-                                                                       // have 
to fix the swapped bytes
-                                                                       u = 
u_val.u[0];
-                                                                       
u_val.u[0] = u_val.u[3];
-                                                                       
u_val.u[3] = u;
-                                                                       u = 
u_val.u[1];
-                                                                       
u_val.u[1] = u_val.u[2];
-                                                                       
u_val.u[2] = u;
-                                                                       u = 
u_val.u[4];
-                                                                       
u_val.u[4] = u_val.u[5];
-                                                                       
u_val.u[5] = u;
-                                                                       u = 
u_val.u[6];
-                                                                       
u_val.u[6] = u_val.u[7];
-                                                                       
u_val.u[7] = u;
+                                                                       
u_val.u[0] = (guid_val.Data1 >> 24) & 0xFF;
+                                                                       
u_val.u[1] = (guid_val.Data1 >> 16) & 0xFF;
+                                                                       
u_val.u[2] = (guid_val.Data1 >> 8) & 0xFF;
+                                                                       
u_val.u[3] = guid_val.Data1 & 0xFF;
+                                                                       
u_val.u[4] = (guid_val.Data2 >> 8) & 0xFF;
+                                                                       
u_val.u[5] = guid_val.Data2 & 0xFF;
+                                                                       
u_val.u[6] = (guid_val.Data3 >> 8) & 0xFF;
+                                                                       
u_val.u[7] = guid_val.Data3 & 0xFF;
+                                                                       
memcpy(&u_val.u[8], &guid_val.Data4[0], 8);
                                                                        gdkret 
= BUNappend(b, (void *) &u_val.uuid_val, false);
                                                                } else {
                                                                        gdkret 
= BUNappend(b, ATOMnilptr(b->ttype), false);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to