Changeset: 8e20e895d8a8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8e20e895d8a8
Modified Files:
        sql/backends/monet5/vaults/lidar/75_lidar.sql
        sql/backends/monet5/vaults/lidar/lidar.c
        sql/backends/monet5/vaults/lidar/lidar.h
        sql/backends/monet5/vaults/lidar/lidar.mal
Branch: data-vaults
Log Message:

Implement unload functionality for lidar vault

The unload function takes the table name and deletes all data from the table,
leaving the table and the catalogs (SQL and lidar) unchanged.


diffs (97 lines):

diff --git a/sql/backends/monet5/vaults/lidar/75_lidar.sql 
b/sql/backends/monet5/vaults/lidar/75_lidar.sql
--- a/sql/backends/monet5/vaults/lidar/75_lidar.sql
+++ b/sql/backends/monet5/vaults/lidar/75_lidar.sql
@@ -3,5 +3,6 @@ create procedure lidarattach(fname strin
 create procedure lidarattach(fname string, tname string, params string) 
external name lidar.attach;
 create procedure lidarload(tname string) external name lidar.load;
 create procedure lidarexport(tname string, fname string, format string) 
external name lidar.export;
+create procedure lidarunload(tname string) external name lidar.unload;
 create procedure lidarchecktab(tname string) external name lidar.checktab;
 create procedure lidaranalyzetab(status int, tname string) external name 
lidar.analyzetab;
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
@@ -1990,6 +1990,53 @@ LIDARAnalyzeTable(Client cntxt, MalBlkPt
        return MAL_SUCCEED;
 }
 
+str
+LIDARunload(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) {
+       str msg = MAL_SUCCEED;
+       str tname = *getArgReference_str(stk, pci, 1);
+       mvc *m = NULL;
+       sql_schema *sch = NULL;
+       sql_table *lidar_tbl = NULL, *tbl = NULL;
+       sql_column *col = NULL;
+       oid rid = oid_nil;
+       BUN sz = 0;
+
+       if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != MAL_SUCCEED) {
+               return msg;
+       }
+       /* XXX: Is the following really necessary? */
+       if ((msg = checkSQLContext(cntxt)) != MAL_SUCCEED)
+                       return msg;
+
+       sch = mvc_bind_schema(m, "sys");
+       lidar_tbl = mvc_bind_table(m, sch, "lidar_tables");
+       if (lidar_tbl == NULL) {
+               msg = createException(MAL, "lidar.check", "LIDAR catalog is 
missing.\n");
+               return msg;
+       }
+
+       /*Check if is a table which belongs to lidar_tables*/
+       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.check", "Could not find table 
%s.\n", tname);
+               return msg;
+       }
+
+       tbl = mvc_bind_table(m, sch, tname);
+       if (tbl == NULL) {
+               msg = createException(MAL, "lidar.check", "Could not find table 
%s.\n", tname);
+               return msg;
+       }
+
+       sz = mvc_clear_table(m, tbl);
+
+#ifndef NDEBUG
+       fprintf(stderr, "LIDARunload called for table: %s(" OIDFMT ")\n", 
tname, sz);
+#endif
+
+       return msg;
+}
 
 /* Left over code to be examined and scavenged */
 
@@ -2084,3 +2131,4 @@ str LIDARdirpat(Client cntxt, MalBlkPtr 
 #endif
        return MAL_SUCCEED;
 }
+
diff --git a/sql/backends/monet5/vaults/lidar/lidar.h 
b/sql/backends/monet5/vaults/lidar/lidar.h
--- a/sql/backends/monet5/vaults/lidar/lidar.h
+++ b/sql/backends/monet5/vaults/lidar/lidar.h
@@ -31,6 +31,7 @@ lidar_export str LIDARexportTable(Client
 lidar_export str LIDARprelude(void *ret);
 lidar_export str LIDARCheckTable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 lidar_export str LIDARAnalyzeTable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
+lidar_export str LIDARunload(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 
 typedef struct lidar_header_info {
        /* Table */
diff --git a/sql/backends/monet5/vaults/lidar/lidar.mal 
b/sql/backends/monet5/vaults/lidar/lidar.mal
--- a/sql/backends/monet5/vaults/lidar/lidar.mal
+++ b/sql/backends/monet5/vaults/lidar/lidar.mal
@@ -30,6 +30,10 @@ pattern export(tablename:str, fname:str,
 address LIDARexportTable
 comment "Exporta LIDAR table to a LAS/LAZ file"
 
+pattern unload(tablename:str):void
+address LIDARunload
+comment "Unload the data from a LIDAR table"
+
 command checktable(mvc:int, tablename :str) (:int, :int)
 address LIDARCheckTable
 comment "Check if table was loaded";
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to