Changeset: a7a5b40f9720 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a7a5b40f9720
Modified Files:
sql/backends/monet5/vaults/parquet/parquet.c
sql/backends/monet5/vaults/parquet/parquet.h
Branch: parquet
Log Message:
add parquet type mapping
diffs (208 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
@@ -16,6 +16,7 @@
#include "mal_debugger.h"
#include "mal_linker.h"
#include "mal_utils.h"
+#include "sql_types.h"
static parquet_file *
parquet_open_file(char* filename)
@@ -40,21 +41,124 @@ parquet_open_file(char* filename)
return file;
}
-static GArrowTable *
-parquet_get_table_metadata(parquet_file *file)
-{
- GError *table_error;
- GArrowTable *table = gparquet_arrow_file_reader_read_table(file->reader,
&table_error);
+static char* parquet_type_map(GArrowType type) {
+ switch(type) {
+ case GARROW_TYPE_NA:
+ return "NA";
+
+ case GARROW_TYPE_BOOLEAN:
+ return "boolean";
+
+ case GARROW_TYPE_UINT8:
+ return "uint8";
+
+ case GARROW_TYPE_INT8:
+ return "int8";
+
+ case GARROW_TYPE_UINT16:
+ return "uint16";
+
+ case GARROW_TYPE_INT16:
+ return "int16";
+
+ case GARROW_TYPE_UINT32:
+ return "uint32";
+
+ case GARROW_TYPE_INT32:
+ return "int32";
+
+ case GARROW_TYPE_UINT64:
+ return "uint64";
+
+ case GARROW_TYPE_INT64:
+ return "int64";
+
+ case GARROW_TYPE_HALF_FLOAT:
+ return "half float";
+
+ case GARROW_TYPE_FLOAT:
+ return "type float";
+
+ case GARROW_TYPE_DOUBLE:
+ return "double";
+
+ case GARROW_TYPE_STRING:
+ return "type string";
+
+ case GARROW_TYPE_BINARY:
+ return "type binary";
+
+ case GARROW_TYPE_FIXED_SIZE_BINARY:
+ return "fixed size binary";
+
+ case GARROW_TYPE_DATE32:
+ return "date32";
+
+ case GARROW_TYPE_DATE64:
+ return "date64";
+
+ 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";
+
+ case GARROW_TYPE_DECIMAL128:
+ return "decimal128";
+
+ case GARROW_TYPE_DECIMAL256:
+ return "decimal256";
+
+ case GARROW_TYPE_LIST:
+ return "type 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:
+ return "fixed size list";
+
+ case GARROW_TYPE_DURATION:
+ return "type duration";
+
+ case GARROW_TYPE_LARGE_STRING:
+ return "large string";
+
+ case GARROW_TYPE_LARGE_BINARY:
+ return "Large binary";
+
+ case GARROW_TYPE_LARGE_LIST:
+ return "Large list";
+
+ case GARROW_TYPE_MONTH_DAY_NANO_INTERVAL:
+ return "Month Day interval";
+ } // switch
- if(table_error) {
- printf("%s", table_error->message);
- }
-
- /*
- guint64 n_rows = garrow_table_get_n_rows(table);
- */
-
- return table;
+ return "not implemented";
}
static int
@@ -70,19 +174,34 @@ parquet_add_types(mvc *sql, sql_subfunc
return -1;
}
- GArrowTable *tbl = parquet_get_table_metadata(file);
+ GError *table_error;
+ GArrowTable *table = gparquet_arrow_file_reader_read_table(file->reader,
&table_error);
+
+ if(table_error) {
+ printf("%s", table_error->message);
+ return -1;
+ }
+
+ guint n_columns = garrow_table_get_n_columns(table);
list *types = sa_list(sql->sa);
- /*
- for each parquet column
- get type from parquet column
+
+ 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);
+ }
- sql_subtype *t = find_type( using meta data);
+ // for each parquet column
+ // get type from parquet column
- append(types, t);
- }
- */
- (void)tbl;
+ // sql_subtype *t = find_type( using meta data);
+
+ // append(types, t);
+ // }
+ (void)table;
/* cleanup tbl */
f->res = types;
diff --git a/sql/backends/monet5/vaults/parquet/parquet.h
b/sql/backends/monet5/vaults/parquet/parquet.h
--- a/sql/backends/monet5/vaults/parquet/parquet.h
+++ b/sql/backends/monet5/vaults/parquet/parquet.h
@@ -9,10 +9,6 @@ typedef struct parquet_file {
char* error;
} parquet_file;
-typedef struct parquet_table_metadata {
- char* table_name;
- int n_row;
-} parquet_table_metadata;
/* Opens the file, and returns a struct containing the reader. */
//parquet_file *parquet_open_file(char* filename);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]