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 -- [email protected]
To unsubscribe send an email to [email protected]