Changeset: 2af293dc3d14 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2af293dc3d14
Modified Files:
        clients/Tests/MAL-signatures-hge.test
        sql/backends/monet5/sql.c
        sql/scripts/26_sysmon.sql
Branch: default
Log Message:

add direct interface for table vacuum


diffs (108 lines):

diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -49980,8 +49980,13 @@ SQLstr_auto_vacuum;
 auto vacuum string column with interval(sec)
 sql
 vacuum
+unsafe pattern sql.vacuum(X_0:str, X_1:str):void
+SQLstr_vacuum;
+vacuum a string column
+sql
+vacuum
 unsafe pattern sql.vacuum(X_0:str, X_1:str, X_2:str):void
-SQLstr_column_vacuum;
+SQLstr_vacuum;
 vacuum a string column
 sql
 variance
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -4962,13 +4962,15 @@ do_str_table_vacuum(sql_trans *tr, sql_t
 }
 
 static str
-SQLstr_column_vacuum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+SQLstr_vacuum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        mvc *m = NULL;
        str msg = NULL;
        char *sname = *getArgReference_str(stk, pci, 1);
        char *tname = *getArgReference_str(stk, pci, 2);
-       char *cname = *getArgReference_str(stk, pci, 3);
+       char *cname = NULL;
+       if (pci->argc == 4)
+               cname = *getArgReference_str(stk, pci, 3);
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
                return msg;
@@ -4981,26 +4983,31 @@ SQLstr_column_vacuum(Client cntxt, MalBl
        sql_column *c = NULL;
 
        if (strNil(sname))
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Schema 
name cannot be NULL");
+               throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Schema name 
cannot be NULL");
        if (strNil(tname))
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Table name 
cannot be NULL");
+               throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Table name cannot 
be NULL");
        if (strNil(cname))
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Column 
name cannot be NULL");
+               throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Column name 
cannot be NULL");
        if ((s = mvc_bind_schema(m, sname)) == NULL)
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(3F000) "Invalid or 
missing schema %s",sname);
+               throw(SQL, "sql.str_vacuum", SQLSTATE(3F000) "Invalid or 
missing schema %s",sname);
        if ((t = mvc_bind_table(m, s, tname)) == NULL)
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(42S02) "Invalid or 
missing table %s.%s",sname,tname);
+               throw(SQL, "sql.str_vacuum", SQLSTATE(42S02) "Invalid or 
missing table %s.%s",sname,tname);
        if (!isTable(t))
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "%s '%s' is 
not persistent",
+               throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "%s '%s' is not 
persistent",
                          TABLE_TYPE_DESCRIPTION(t->type, t->properties), 
t->base.name);
        if (isTempTable(t))
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Cannot 
vacuum column from temporary table");
-       if ((c = mvc_bind_column(m, t, cname)) == NULL)
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(42S22) "Column not 
found in %s.%s.%s",sname,tname,cname);
-       if (c->storage_type)
-               throw(SQL, "sql.str_column_vacuum", SQLSTATE(42000) "Cannot 
vacuum compressed column");
-
-       return do_str_column_vacuum(tr, c);
+               throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Cannot vacuum 
column from temporary table");
+       if (cname) {
+               if ((c = mvc_bind_column(m, t, cname)) == NULL)
+                       throw(SQL, "sql.str_vacuum", SQLSTATE(42S22) "Column 
not found in %s.%s.%s",sname,tname,cname);
+               if (c->storage_type)
+                       throw(SQL, "sql.str_vacuum", SQLSTATE(42000) "Cannot 
vacuum compressed column");
+       }
+
+       if (c)
+               return do_str_column_vacuum(tr, c);
+       else
+               return do_str_table_vacuum(tr, t);
 }
 
 
@@ -6223,9 +6230,10 @@ static mel_func sql_init_funcs[] = {
  pattern("sql", "corr", SQLcorr, false, "return the correlation value of 
groups", args(1,8, 
arg("",dbl),arg("b",hge),arg("c",hge),arg("p",bit),arg("o",bit),arg("t",int),arg("s",oid),arg("e",oid))),
  pattern("batsql", "corr", SQLcorr, false, "return the correlation value of 
groups", args(1,8, 
batarg("",dbl),optbatarg("b",hge),optbatarg("c",hge),optbatarg("p",bit),optbatarg("o",bit),arg("t",int),optbatarg("s",oid),optbatarg("e",oid))),
 #endif
- pattern("sql", "vacuum", SQLstr_column_vacuum, true, "vacuum a string 
column", args(0,3, arg("sname",str),arg("tname",str),arg("cname",str))),
+ pattern("sql", "vacuum", SQLstr_vacuum, true, "vacuum a string column", 
args(0,3, arg("sname",str),arg("tname",str),arg("cname",str))),
  pattern("sql", "vacuum", SQLstr_auto_vacuum, true, "auto vacuum string column 
with interval(sec)", args(0,4, 
arg("sname",str),arg("tname",str),arg("cname",str),arg("interval", int))),
  pattern("sql", "stop_vacuum", SQLstr_stop_vacuum, true, "stop auto vacuum", 
args(0,3, arg("sname",str),arg("tname",str),arg("cname",str))),
+ pattern("sql", "vacuum", SQLstr_vacuum, true, "vacuum a string column", 
args(0,2, arg("sname",str),arg("tname",str))),
  pattern("sql", "vacuum", SQLstr_auto_vacuum, true, "auto vacuum string column 
of given table with interval(sec)", args(0,3, 
arg("sname",str),arg("tname",str),arg("interval", int))),
  pattern("sql", "stop_vacuum", SQLstr_stop_vacuum, true, "stop auto vacuum", 
args(0,2, arg("sname",str),arg("tname",str))),
  pattern("sql", "check", SQLcheck, false, "Return sql string of check 
constraint.", args(1,3, arg("sql",str), arg("sname", str), arg("name", str))),
diff --git a/sql/scripts/26_sysmon.sql b/sql/scripts/26_sysmon.sql
--- a/sql/scripts/26_sysmon.sql
+++ b/sql/scripts/26_sysmon.sql
@@ -80,6 +80,8 @@ external name sql.vacuum;
 create procedure sys.stop_vacuum(sname string, tname string, cname string)
 external name sql.stop_vacuum;
 
+create procedure sys.vacuum(sname string, tname string)
+external name sql.vacuum;
 create procedure sys.vacuum(sname string, tname string, interval int)
 external name sql.vacuum;
 create procedure sys.stop_vacuum(sname string, tname string)
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to