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]