Changeset: 121d4807537e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=121d4807537e
Modified Files:
sql/backends/monet5/vaults/lidar/lidar.c
Branch: data-vaults
Log Message:
Create and fill vault_journal table
diffs (273 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
@@ -8,6 +8,7 @@
/*
* Author: K. Kyzirakos
+ * Author: P. Koutsourakis
*
* This module contains primitives for accessing data in LiDAR file format.
*/
@@ -35,8 +36,8 @@
static MT_Lock mt_lidar_lock;
-#define LIDAR_LOCK MT_lock_set(&mt_lidar_lock)
-#define LIDAR_UNLOCK MT_lock_unset(&mt_lidar_lock)
+#define LIDAR_LOCK MT_lock_set(&mt_lidar_lock)
+#define LIDAR_UNLOCK MT_lock_unset(&mt_lidar_lock)
#define LIDAR_INS_COL "INSERT INTO lidar_columns(id, name, type, units,
number, table_id) \
VALUES(%d,'%s','%s','%s',%d,%d);"
@@ -210,7 +211,7 @@ static void
LIDARinitCatalog(mvc *m)
{
sql_schema *sch;
- sql_table *lidar_fl, *lidar_tbl, *lidar_col;
+ sql_table *lidar_fl, *lidar_tbl, *lidar_col, *vault_journal;
sch = mvc_bind_schema(m, "sys");
@@ -269,6 +270,15 @@ LIDARinitCatalog(mvc *m)
mvc_create_column_(m, lidar_col, "PrecisionY", "int", 16);
mvc_create_column_(m, lidar_col, "PrecisionZ", "int", 16);
}
+
+ vault_journal = mvc_bind_table(m, sch, "vault_journal");
+ if (vault_journal == NULL) {
+ vault_journal = mvc_create_table(m, sch, "vault_journal",
tt_table, 0, SQL_PERSIST, 0, 4);
+ mvc_create_column_(m, vault_journal, "table_id", "int", 32);
+ mvc_create_column_(m, vault_journal, "table_name", "varchar",
255);
+ mvc_create_column_(m, vault_journal, "vault_type", "varchar",
255);
+ mvc_create_column_(m, vault_journal, "version", "varchar", 10);
+ }
}
#if 0
@@ -708,12 +718,14 @@ LIDARopenFile(str fname)
return res;
}
+
+#define LIDAR_READER_VERSION "1.8.0"
str LIDARattach(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
mvc *m = NULL;
sql_trans *tr;
sql_schema *sch;
- sql_table *lidar_fl, *lidar_tbl, *lidar_col, *tbl = NULL;
+ sql_table *lidar_fl, *lidar_tbl, *lidar_col, *tbl = NULL,
*tables_catalog;
sql_column *col;
sql_subtype t;
str msg = MAL_SUCCEED;
@@ -727,6 +739,8 @@ str LIDARattach(Client cntxt, MalBlkPtr
struct stat buf;
int scaleX, scaleY, scaleZ;
int precisionX, precisionY, precisionZ;
+ int *gtid;
+ char *istmt=NULL;
if (pci->argc == 3) {
tname = *getArgReference_str(stk, pci, 2);
@@ -784,6 +798,7 @@ str LIDARattach(Client cntxt, MalBlkPtr
lidar_fl = mvc_bind_table(m, sch, "lidar_files");
lidar_tbl = mvc_bind_table(m, sch, "lidar_tables");
lidar_col = mvc_bind_table(m, sch, "lidar_columns");
+ /* vault_journal = mvc_bind_table(m, sch, "vault_journal"); */
/* check if the file is already attached */
col = mvc_bind_column(m, lidar_fl, "name");
@@ -830,6 +845,21 @@ str LIDARattach(Client cntxt, MalBlkPtr
*p = '_';
}
+ /* add data to vault journal */
+ tables_catalog = mvc_bind_table(m, sch, "_tables");
+ col = mvc_bind_column(m, tables_catalog, "name");
+ rid = table_funcs.column_find_row(m->session->tr, col, tname_low, NULL);
+ col = mvc_bind_column(m, tables_catalog, "id");
+ gtid = (int *)table_funcs.column_find_value(m->session->tr, col, rid);
+
+ istmt = (char *) GDKzalloc(8192);
+ snprintf(istmt, 8192, "INSERT INTO sys.vault_journal VALUES(%d,
'lidar', '%s', '%s')", *gtid, LIDAR_READER_VERSION, tname_low);
+ msg = SQLstatementIntern(cntxt, &istmt, "LIDARattach", TRUE, FALSE,
NULL);
+ GDKfree(istmt);
+ if (msg) {
+ return msg;
+ }
+
/* check table name for existence in the lidar catalog */
col = mvc_bind_column(m, lidar_tbl, "name");
rid = table_funcs.column_find_row(m->session->tr, col, tname_low, NULL);
@@ -950,6 +980,9 @@ str LIDARattach(Client cntxt, MalBlkPtr
store_funcs.append_col(m->session->tr,
mvc_bind_column(m,
lidar_col, "PrecisionZ"), &precisionZ, TYPE_int);
+ /* Add the metadata to the sys.statistics table for each column. */
+
+
/* add a lidar_column tuple */
col = mvc_bind_column(m, lidar_col, "id");
cid = store_funcs.count_col(tr, col, 1) + 1;
@@ -1157,15 +1190,6 @@ str LIDARloadTable_(mvc *m, sql_schema *
z = NULL;
error_code = 5;
}
-/* ||||||| base */
-/* x = BATnew(TYPE_void, TYPE_dbl, rows, PERSISTENT); */
-/* y = BATnew(TYPE_void, TYPE_dbl, rows, PERSISTENT); */
-/* z = BATnew(TYPE_void, TYPE_dbl, rows, PERSISTENT); */
-/* ======= */
-/* x = COLnew(0, TYPE_dbl, rows, PERSISTENT); */
-/* y = COLnew(0, TYPE_dbl, rows, PERSISTENT); */
-/* z = COLnew(0, TYPE_dbl, rows, PERSISTENT); */
-/* >>>>>>> other */
if ( x == NULL || y == NULL || z == NULL) {
GDKfree(tpcode);
@@ -1198,126 +1222,7 @@ str LIDARloadTable_(mvc *m, sql_schema *
return msg;
}
-/* <<<<<<< local */
-/* ||||||| base */
-/* BATseqbase(x, 0); */
-/* BATseqbase(y, 0); */
-/* BATseqbase(z, 0); */
-/* px = (dbl *) Tloc(x, BUNfirst(x)); */
-/* py = (dbl *) Tloc(y, BUNfirst(y)); */
-/* pz = (dbl *) Tloc(z, BUNfirst(z)); */
-
-/* p = LASReader_GetNextPoint(reader); */
-/* i = 0; */
-/* while (p) { */
-/* #ifndef NDEBUG */
-/* /\* print the details of a few points when in debug mode *\/ */
-/* if ( i % 1000000 == 0 ) { */
-/* double x = LASPoint_GetX(p); */
-/* double y = LASPoint_GetY(p); */
-/* double z = LASPoint_GetZ(p); */
-/* long rawx = LASPoint_GetRawX(p); */
-/* long rawy = LASPoint_GetRawY(p); */
-/* long rawz = LASPoint_GetRawZ(p); */
-/* unsigned short intensity = LASPoint_GetIntensity (p); */
-/* unsigned short returnno =LASPoint_GetReturnNumber (p);
*/
-/* unsigned short noofreturns =
LASPoint_GetNumberOfReturns (p); */
-/* unsigned short scandir = LASPoint_GetScanDirection (p);
*/
-/* unsigned short flightline = LASPoint_GetFlightLineEdge
(p); */
-/* unsigned char flags = LASPoint_GetScanFlags (p); */
-/* unsigned char class = LASPoint_GetClassification (p); */
-/* double t = LASPoint_GetTime(p); */
-/* char anglerank = LASPoint_GetScanAngleRank (p); */
-/* unsigned short sourceid = LASPoint_GetPointSourceId
(p); */
-/* fprintf(stderr, */
-/* "(point # %d)" */
-/* "X (raw) : %f (%ld)\n" */
-/* "Z (raw) : %f (%ld)\n" */
-/* "Z (raw) : %f (%ld)\n" */
-/* "intensity : %d\n" */
-/* "return number : %d\n" */
-/* "number of returns : %d\n" */
-/* "scan direction : %d\n" */
-/* "flight line edge : %d\n" */
-/* "scan flags : %lc\n" */
-/* "classification : %lc\n" */
-/* "time : %f\n" */
-/* "scan angle rank : %lc\n" */
-/* "point source id : %d\n", */
-/* i, x, rawx, y, rawy, z, rawz, */
-/* intensity, returnno, noofreturns, */
-/* scandir, flightline, flags, class, */
-/* t, anglerank, sourceid); */
-/* } */
-/* #endif */
-/* //TODO: Add a flag that indicates whether LiDAR points should
be validited up front */
-/* px[i] = LASPoint_GetRawX(p) * scalex + offsetx; */
-/* py[i] = LASPoint_GetRawY(p) * scaley + offsety; */
-/* pz[i] = LASPoint_GetRawZ(p) * scalez + offsetz; */
-
-/* p = LASReader_GetNextPoint(reader); */
-/* i++; */
-/* } */
-
-/* ======= */
-/* px = (dbl *) Tloc(x, 0); */
-/* py = (dbl *) Tloc(y, 0); */
-/* pz = (dbl *) Tloc(z, 0); */
-
-/* p = LASReader_GetNextPoint(reader); */
-/* i = 0; */
-/* while (p) { */
-/* #ifndef NDEBUG */
-/* /\* print the details of a few points when in debug mode *\/ */
-/* if ( i % 1000000 == 0 ) { */
-/* double x = LASPoint_GetX(p); */
-/* double y = LASPoint_GetY(p); */
-/* double z = LASPoint_GetZ(p); */
-/* long rawx = LASPoint_GetRawX(p); */
-/* long rawy = LASPoint_GetRawY(p); */
-/* long rawz = LASPoint_GetRawZ(p); */
-/* unsigned short intensity = LASPoint_GetIntensity (p); */
-/* unsigned short returnno =LASPoint_GetReturnNumber (p);
*/
-/* unsigned short noofreturns =
LASPoint_GetNumberOfReturns (p); */
-/* unsigned short scandir = LASPoint_GetScanDirection (p);
*/
-/* unsigned short flightline = LASPoint_GetFlightLineEdge
(p); */
-/* unsigned char flags = LASPoint_GetScanFlags (p); */
-/* unsigned char class = LASPoint_GetClassification (p); */
-/* double t = LASPoint_GetTime(p); */
-/* char anglerank = LASPoint_GetScanAngleRank (p); */
-/* unsigned short sourceid = LASPoint_GetPointSourceId
(p); */
-/* fprintf(stderr, */
-/* "(point # %d)" */
-/* "X (raw) : %f (%ld)\n" */
-/* "Z (raw) : %f (%ld)\n" */
-/* "Z (raw) : %f (%ld)\n" */
-/* "intensity : %d\n" */
-/* "return number : %d\n" */
-/* "number of returns : %d\n" */
-/* "scan direction : %d\n" */
-/* "flight line edge : %d\n" */
-/* "scan flags : %lc\n" */
-/* "classification : %lc\n" */
-/* "time : %f\n" */
-/* "scan angle rank : %lc\n" */
-/* "point source id : %d\n", */
-/* i, x, rawx, y, rawy, z, rawz, */
-/* intensity, returnno, noofreturns, */
-/* scandir, flightline, flags, class, */
-/* t, anglerank, sourceid); */
-/* } */
-/* #endif */
-/* //TODO: Add a flag that indicates whether LiDAR points should
be validited up front */
-/* px[i] = LASPoint_GetRawX(p) * scalex + offsetx; */
-/* py[i] = LASPoint_GetRawY(p) * scaley + offsety; */
-/* pz[i] = LASPoint_GetRawZ(p) * scalez + offsetz; */
-
-/* p = LASReader_GetNextPoint(reader); */
-/* i++; */
-/* } */
-
-/* >>>>>>> other */
BATsetcount(x, rows);
BATsetcount(y, rows);
BATsetcount(z, rows);
@@ -1449,7 +1354,7 @@ LIDARCheckTable(Client cntxt, MalBlkPtr
} else {
if (tbl->access == TABLE_WRITABLE)
*res = LIDAR_TABLE_ANALYZE;
- else
+ else
*res = LIDAR_TABLE_DONE;
#ifndef NDEBUG
@@ -1532,7 +1437,7 @@ LIDARAnalyzeTable(Client cntxt, MalBlkPt
return MAL_SUCCEED;
}
-static BAT *
+static BAT *
mvc_bind(mvc *m, char *sname, char *tname, char *cname, int access)
{
sql_trans *tr = m->session->tr;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list