Changeset: 3ebdad007ae1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3ebdad007ae1
Modified Files:
        sql/backends/monet5/vaults/parquet/parquet.c
Branch: parquet
Log Message:

add type binds


diffs (197 lines):

diff --git a/sql/backends/monet5/vaults/parquet/parquet.c 
b/sql/backends/monet5/vaults/parquet/parquet.c
--- a/sql/backends/monet5/vaults/parquet/parquet.c
+++ b/sql/backends/monet5/vaults/parquet/parquet.c
@@ -29,6 +29,8 @@ parquet_open_file(char* filename)
 
     parquet_file *file = GDKmalloc(sizeof(parquet_file));
 
+    // TODO: access is not available on Windows.
+    // TODO: probably replace this with GDKfdlocate located in gdk_storage.h
     if (access(filename, F_OK) != 0) {
       reader = NULL;
     } 
@@ -49,118 +51,80 @@ static char* parquet_type_map(GArrowType
         return  "NA";
         
       case GARROW_TYPE_BOOLEAN:
-        return  "boolean";
+        return  "BOOL";
         
       case GARROW_TYPE_UINT8:
-        return  "uint8";
-        
       case GARROW_TYPE_INT8:
-        return  "int8";
-        
-      case GARROW_TYPE_UINT16:
-        return  "uint16";
+        return  "TINYINT";
         
       case GARROW_TYPE_INT16:
-        return  "int16";
+      case GARROW_TYPE_UINT16:
+        return  "SMALLINT";
         
       case GARROW_TYPE_UINT32:
-        return  "uint32";
-        
       case GARROW_TYPE_INT32:
-        return  "int32";
-        
+        return  "INT";
+
       case GARROW_TYPE_UINT64:
-        return  "uint64";
-        
       case GARROW_TYPE_INT64:
-        return  "int64";
-        
-      case GARROW_TYPE_HALF_FLOAT:
-        return  "half float";
+        return  "BIGINT";
         
       case GARROW_TYPE_FLOAT:
-        return  "type float";
+      case GARROW_TYPE_HALF_FLOAT:
+        return  "FLOAT";
         
       case GARROW_TYPE_DOUBLE:
-        return  "double";
+        return  "DOUBLE";
         
       case GARROW_TYPE_STRING:
-        return  "type string";
+        return  "STRING";
         
       case GARROW_TYPE_BINARY:
-        return  "type binary";
-        
       case GARROW_TYPE_FIXED_SIZE_BINARY:
-        return  "fixed size binary";
+        return  "BLOB";
         
       case GARROW_TYPE_DATE32:
-        return  "date32";
-        
       case GARROW_TYPE_DATE64:
-        return  "date64";
+        return  "DATE";
         
       case GARROW_TYPE_TIMESTAMP:
-        return  "timestamp";
-        
       case GARROW_TYPE_TIME32:
-        return  "time32";
-        
       case GARROW_TYPE_TIME64:
-        return  "time64";
-        
-      case GARROW_TYPE_MONTH_INTERVAL:
-        return  "type month interval";
-        
-      case GARROW_TYPE_DAY_TIME_INTERVAL:
-        return  "day time interval";
+        return  "TIMESTAMP";
         
       case GARROW_TYPE_DECIMAL128:
-        return  "decimal128";
-        
       case GARROW_TYPE_DECIMAL256:
-        return  "decimal256";
+        return  "DECIMAL";
         
       case GARROW_TYPE_LIST:
-        return  "type list";
-        
+      case GARROW_TYPE_LARGE_LIST:
       case GARROW_TYPE_STRUCT:
-        return  "type struct";
-        
       case GARROW_TYPE_SPARSE_UNION:
-        return  "sparse union";
-        
       case GARROW_TYPE_DENSE_UNION:
-        return  "dense union";
-        
       case GARROW_TYPE_DICTIONARY:
-        return  "type dict";
-        
       case GARROW_TYPE_MAP:
-        return  "type map";
-        
       case GARROW_TYPE_EXTENSION:
-        return  "type extension";
+      case GARROW_TYPE_FIXED_SIZE_LIST:
+      case GARROW_TYPE_DURATION:
+        return NULL;
         
-      case GARROW_TYPE_FIXED_SIZE_LIST:
-        return  "fixed size list";
-        
-      case GARROW_TYPE_DURATION:
-        return  "type duration";
         
       case GARROW_TYPE_LARGE_STRING:
-        return  "large string";
+        return  "TEXT";
         
       case GARROW_TYPE_LARGE_BINARY:
         return  "Large binary";
         
-      case GARROW_TYPE_LARGE_LIST:
-        return  "Large list";
-        
+      ///
+      /// TODO: figure out what this should be.
+      ///
+      case GARROW_TYPE_MONTH_INTERVAL:
+      case GARROW_TYPE_DAY_TIME_INTERVAL:
       case GARROW_TYPE_MONTH_DAY_NANO_INTERVAL:
-        return  "Month Day interval";
+        return  NULL;
     } // switch
 
-    return "not implemented";
+    return NULL;
 }
 
 static str
@@ -182,25 +146,28 @@ parquet_add_types(mvc *sql, sql_subfunc 
   guint n_columns = garrow_table_get_n_columns(table);
 
   list *types = sa_list(sql->sa);
+  list *col_names = sa_list(sql->sa);
 
   for(int col = 0; col < (int)n_columns; col++) {
       GArrowChunkedArray *array = garrow_table_get_column_data(table, col);
       GArrowType type = garrow_chunked_array_get_value_type(array);
       char* st = parquet_type_map(type);
 
-      printf("%s", st);
+      if(st) {
+        /// add to list.
+               sql_subtype *t = sql_bind_subtype(sql->sa, st, 8, 0);
+
+          sa_list_append(sql->sa, types, t);
+      }
+      else {
+        throw(SQL, SQLSTATE(42000), "parquet" RUNTIME_LOAD_ERROR); // TODO: 
this should throw a 'unsupported column type' error.
+      }
   }
 
-       // for each parquet column
-       //      get type from parquet column
-
-       //      sql_subtype *t = find_type( using meta data);
-
-    //     append(types, t);
-    // }
-       (void)table;
+  (void)table;
        /* cleanup tbl */
-    f->res = types;
+  f->res = types;
+  f->colnames = col_names;
 
        /* close file */
        GDKfree(file);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to