Changeset: 385e4c249b48 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/385e4c249b48
Modified Files:
        sql/backends/monet5/vaults/parquet/parquet.c
        sql/server/rel_file_loader.h
        sql/server/rel_select.c
Branch: parquet
Log Message:

added small pseudo code


diffs (162 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
@@ -17,7 +17,6 @@
 #include "mal_linker.h"
 #include "mal_utils.h"
 
-/*
 static parquet_file *
 parquet_open_file(char* filename)
 {
@@ -41,7 +40,7 @@ parquet_open_file(char* filename)
     return file;
 }
 
-static parquet_table_metadata
+static GArrowTable *
 parquet_get_table_metadata(parquet_file *file)
 {
     GError *table_error;
@@ -51,25 +50,51 @@ parquet_get_table_metadata(parquet_file 
         printf("%s", table_error->message);
     }
 
+       /*
     guint64 n_rows = garrow_table_get_n_rows(table);
-
-    parquet_table_metadata metadata = {"foo", n_rows};
+       */
 
-    return metadata;
+    return table;
 }
-*/
 
 static int
-parquet_add_types(sql_subfunc *f, char *filename)
+parquet_add_types(mvc *sql, sql_subfunc *f, char *filename)
 {
        (void)f;
        (void)filename;
+
+    parquet_file *file = parquet_open_file(filename);
+
+       if(file->error) {
+               //return file->error;
+               return -1;
+       }
+
+       GArrowTable *tbl = parquet_get_table_metadata(file);
+
+    list *types = sa_list(sql->sa);
+       /*
+       for each parquet column
+               get type from parquet column
+
+               sql_subtype *t = find_type( using meta data);
+
+        append(types, t);
+    }
+       */
+       (void)tbl;
+       /* cleanup tbl */
+    f->res = types;
+
+       /* close file */
+       GDKfree(file);
        return 0;
 }
 
 static int
-parquet_load(sql_subfunc *f, char *filename)
+parquet_load(mvc *sql, sql_subfunc *f, char *filename)
 {
+       (void)sql;
        (void)f;
        (void)filename;
        return 0;
diff --git a/sql/server/rel_file_loader.h b/sql/server/rel_file_loader.h
--- a/sql/server/rel_file_loader.h
+++ b/sql/server/rel_file_loader.h
@@ -10,10 +10,11 @@
 #define _REL_FILE_LOADER_H_
 
 #include "sql_types.h"
+#include "sql_mvc.h"
 
 /* TODO think of set of file names */
-typedef int (*fl_add_types_fptr)(sql_subfunc *f, char *filename);
-typedef int (*fl_load_fptr)(sql_subfunc *f, char *filename);
+typedef int (*fl_add_types_fptr)(mvc *sql, sql_subfunc *f, char *filename);
+typedef int (*fl_load_fptr)(mvc *sql, sql_subfunc *f, char *filename);
 
 typedef struct file_loader_t {
        char *name;
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -530,7 +530,7 @@ nary_function_arg_types_2str(mvc *sql, l
  */
 
 static char *
-file_loader_add_table_column_types(sql_subfunc *f, sql_allocator *sa, sql_exp 
*e)
+file_loader_add_table_column_types(mvc *sql, sql_subfunc *f, sql_exp *e)
 {
        if (!exp_is_atom(e))
                return "Filename missing";
@@ -542,44 +542,13 @@ file_loader_add_table_column_types(sql_s
        if (ext)
                ext=ext+1;
        printf("file_loader add column types '%s' ext %s\n", filename, 
ext?ext:"");
-       (void)f;
-       (void)sa;
-       (void)e;
 
        file_loader_t *fl = fl_find(ext);
        /* TODO add errors on missing file loader */
        if (fl) {
-                fl->add_types(f, filename); /* TODO check for errors */
+                fl->add_types(sql, f, filename); /* TODO check for errors */
                 return NULL;
        }
-
-       /* below stuff needs to be in the parquet backend code */
-       // #include "../backends/monet5/vaults/parquet/parquet.h"
-
-       // parquet_file *file = parquet_open_file(filename);
-
-//     if(file->error) {
-//             return file->error;
-//     }
-
-//     get_table_metadata(file);
-
-       /* ext -> call back */
-       /*
-       node *n;
-       list *types = sa_list(sa);
-
-       if (ol_first_node(t->columns)) for (n = ol_first_node(t->columns); n; n 
= n->next) {
-               sql_column *c = n->data;
-               if (c->base.name[0] != '%')
-                       append(types, &c->type);
-       }
-       return types;
-       f->res = types;
-       */
-
-//     GDKfree(file);
-
        return NULL;
 }
 
@@ -597,7 +566,7 @@ find_table_function(mvc *sql, char *snam
                if (list_empty(tl) || f->func->vararg || (nexps = 
check_arguments_and_find_largest_any_type(sql, NULL, exps, f, 1))) {
                        if (list_length(exps) == 1 && f && f->func->varres && 
strlen(f->func->mod) == 0 && strlen(f->func->imp) == 0 && strcmp(fname, 
"file_loader") == 0) {
                                sql_exp *file = exps->h->data;
-                               char *err = 
file_loader_add_table_column_types(f, sql->sa, file);
+                               char *err = 
file_loader_add_table_column_types(sql, f, file);
                                if (err)
                                        return sql_error(sql, ERR_NOTFOUND, 
SQLSTATE(42000) "SELECT: file_loader function type resolutions failed '%s'", 
err);
                        }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to