Changeset: 6148c2907c5b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6148c2907c5b
Modified Files:
        sql/backends/monet5/vaults/lidar/lidar.c
Branch: data-vaults
Log Message:

Fix directory loading for LiDAR vault


diffs (101 lines):

diff --git a/sql/backends/monet5/vaults/lidar/lidar.c 
b/sql/backends/monet5/vaults/lidar/lidar.c
--- a/sql/backends/monet5/vaults/lidar/lidar.c
+++ b/sql/backends/monet5/vaults/lidar/lidar.c
@@ -1804,8 +1804,8 @@ str LIDARloadTable(Client cntxt, MalBlkP
        sql_column *col;
        str msg = MAL_SUCCEED;
        size_t sz;
-       oid rid;
        char *filenames_query = GDKmalloc(BUFSIZ);
+       str etname = NULL;
        res_table *fres = NULL;
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != MAL_SUCCEED) {
@@ -1816,40 +1816,16 @@ str LIDARloadTable(Client cntxt, MalBlkP
                goto loadtable_cleanup;
        }
 
-       sch = mvc_bind_schema(m, "sys");
-       if (sch == NULL) {
-               msg = createException(MAL, "lidar.loadtable", "Cannot access 
schema \"sys\"\n");
+       /* Check that the table exists in the LIDAR catalog. If not, it has not 
been
+        * attached yet
+        */
+       etname = SQLescapeString(tname);
+       if (!etname) {
+               msg = createException(MAL, "lidar.loadtable", MAL_MALLOC_FAIL);
                goto loadtable_cleanup;
        }
 
-       lidar_tbl = mvc_bind_table(m, sch, "lidar_tables");
-       if (lidar_tbl == NULL) {
-               msg = createException(MAL, "lidar.loadtable", "LIDAR catalog is 
missing.\n");
-               goto loadtable_cleanup;
-       }
-
-       /* Search for the requested table in the LiDAR catalog */
-       col = mvc_bind_column(m, lidar_tbl, "name");
-       rid = table_funcs.column_find_row(m->session->tr, col, &tname, NULL);
-       if (rid == oid_nil) {
-               msg = createException(MAL, "lidar.loadtable", "Table %s has not 
been attached.\n", tname);
-               goto loadtable_cleanup;
-       }
-
-       tbl = mvc_bind_table(m, sch, tname);
-       if (tbl == NULL) {
-               msg = createException(MAL, "lidar.loadtable", "Could not find 
table %s.\n", tname);
-               goto loadtable_cleanup;
-       }
-
-       col = mvc_bind_column(m, tbl, "x");
-       sz = store_funcs.count_col(m->session->tr, col, 1);
-       if (sz != 0) {
-               msg = createException(MAL, "lidar.loadtable", "Table %s is not 
empty.\n", tname);
-               goto loadtable_cleanup;
-       }
-
-       snprintf(filenames_query, BUFSIZ, "SELECT id FROM lidar_tables WHERE 
name='%s';", tname);
+       snprintf(filenames_query, BUFSIZ, "SELECT id FROM lidar_tables WHERE 
name='%s';", etname);
        msg = SQLstatementIntern(cntxt, &filenames_query, "rows", 1, 0, &fres);
        if (msg != MAL_SUCCEED) {
                goto loadtable_cleanup;
@@ -1858,6 +1834,31 @@ str LIDARloadTable(Client cntxt, MalBlkP
        if (fres) {
                BATiter fs_rid = bat_iterator(BATdescriptor(fres->cols[0].b));
                oid id = 0, cnt = BATcount(fs_rid.b);
+
+               sch = mvc_bind_schema(m, "sys");
+               if (sch == NULL) {
+                       msg = createException(MAL, "lidar.loadtable", "Cannot 
access schema \"sys\"\n");
+                       goto loadtable_cleanup;
+               }
+
+               lidar_tbl = mvc_bind_table(m, sch, "lidar_tables");
+               if (lidar_tbl == NULL) {
+                       msg = createException(MAL, "lidar.loadtable", "LIDAR 
catalog is missing.\n");
+                       goto loadtable_cleanup;
+               }
+
+               tbl = mvc_bind_table(m, sch, tname);
+               if (tbl == NULL) {
+                       msg = createException(MAL, "lidar.loadtable", "Could 
not find table %s.\n", tname);
+                       goto loadtable_cleanup;
+               }
+
+               col = mvc_bind_column(m, tbl, "x");
+               sz = store_funcs.count_col(m->session->tr, col, 1);
+               if (sz != 0) {
+                       msg = createException(MAL, "lidar.loadtable", "Table %s 
is not empty.\n", tname);
+                       goto loadtable_cleanup;
+               }
 #ifndef NDEBUG
                fprintf(stderr, "count: " OIDFMT "\n", cnt);
 #endif
@@ -1874,6 +1875,7 @@ str LIDARloadTable(Client cntxt, MalBlkP
        }
 
 loadtable_cleanup:
+       GDKfree(etname);
        GDKfree(tname);
        GDKfree(filenames_query);
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to