Changeset: f49a132fc195 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f49a132fc195
Modified Files:
sql/backends/monet5/sql_statistics.c
sql/scripts/80_statistics.sql
sql/storage/store.c
Branch: default
Log Message:
use column_id instead of schema,table,column names to speed up insert and
lookup's
diffs (69 lines):
diff --git a/sql/backends/monet5/sql_statistics.c
b/sql/backends/monet5/sql_statistics.c
--- a/sql/backends/monet5/sql_statistics.c
+++ b/sql/backends/monet5/sql_statistics.c
@@ -103,7 +103,7 @@ sql_analyze(Client cntxt, MalBlkPtr mb,
if (col && strcmp(bc->name,
col))
continue;
- snprintf(dquery, 8192, "delete
from sys.statistics where \"schema\" ='%s' and \"table\"='%s' and
\"column\"='%s';", b->name, bt->name, bc->name);
+ snprintf(dquery, 8192, "delete
from sys.statistics where \"column_id\" = %d;", c->base.id);
if (samplesize > 0) {
bsample = BATsample(bn,
(BUN) 25000);
} else
@@ -147,8 +147,7 @@ sql_analyze(Client cntxt, MalBlkPtr mb,
snprintf(maxval, 4,
"nil");
snprintf(minval, 4,
"nil");
}
- snprintf(query, 8192, "insert
into sys.statistics values('%s','%s','%s','%s',%d,now()," LLFMT "," LLFMT ","
LLFMT "," LLFMT ",'%s','%s',%s);", b->name, bt->name, bc->name,
c->type.type->sqlname, width,
- (samplesize ?
samplesize : sz), sz, uniq, nils, minval, maxval, sorted ? "true" : "false");
+ snprintf(query, 8192, "insert
into sys.statistics values(%d,'%s',%d,now()," LLFMT "," LLFMT "," LLFMT ","
LLFMT ",'%s','%s',%s);", c->base.id, c->type.type->sqlname, width, (samplesize
? samplesize : sz), sz, uniq, nils, minval, maxval, sorted ? "true" : "false");
#ifdef DEBUG_SQL_STATISTICS
mnstr_printf(cntxt->fdout,
"%s\n", dquery);
mnstr_printf(cntxt->fdout,
"%s\n", query);
diff --git a/sql/scripts/80_statistics.sql b/sql/scripts/80_statistics.sql
--- a/sql/scripts/80_statistics.sql
+++ b/sql/scripts/80_statistics.sql
@@ -21,9 +21,7 @@
CREATE TABLE sys.statistics(
- "schema" string,
- "table" string,
- "column" string,
+ "column_id" integer,
"type" string,
width integer,
stamp timestamp,
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4317,12 +4317,8 @@ sql_trans_dist_count( sql_trans *tr, sql
sql_schema *sys = find_sql_schema(tr, "sys");
sql_table *stats = find_sql_table(sys, "statistics");
if (stats) {
- sql_column *stats_schema = find_sql_column(stats,
"schema");
- sql_column *stats_table = find_sql_column(stats,
"table");
- sql_column *stats_column = find_sql_column(stats,
"column");
- oid rid = table_funcs.column_find_row(tr, stats_column,
col->base.name, NULL,
- stats_table,
col->t->base.name, NULL,
- stats_schema,
col->t->s->base.name, NULL, NULL);
+ sql_column *stats_column_id = find_sql_column(stats,
"column_id");
+ oid rid = table_funcs.column_find_row(tr,
stats_column_id, &col->base.id, NULL);
if (rid != oid_nil) {
sql_column *stats_unique =
find_sql_column(stats, "unique");
void *v = table_funcs.column_find_value(tr,
stats_unique, rid);
@@ -4344,12 +4340,8 @@ sql_trans_ranges( sql_trans *tr, sql_col
sql_schema *sys = find_sql_schema(tr, "sys");
sql_table *stats = find_sql_table(sys, "statistics");
if (stats) {
- sql_column *stats_schema = find_sql_column(stats,
"schema");
- sql_column *stats_table = find_sql_column(stats,
"table");
- sql_column *stats_column = find_sql_column(stats,
"column");
- oid rid = table_funcs.column_find_row(tr, stats_column,
col->base.name, NULL,
- stats_table,
col->t->base.name, NULL,
- stats_schema,
col->t->s->base.name, NULL, NULL);
+ sql_column *stats_column_id = find_sql_column(stats,
"column_id");
+ oid rid = table_funcs.column_find_row(tr,
stats_column_id, &col->base.id, NULL);
if (rid != oid_nil) {
sql_column *stats_min = find_sql_column(stats,
"minval");
sql_column *stats_max = find_sql_column(stats,
"maxval");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list