Changeset: 6197ae88efa8 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6197ae88efa8 Modified Files: gdk/gdk_logger.c gdk/gdk_logger.h gdk/gdk_sample.c sql/backends/monet5/sql_scenario.c sql/storage/bat/bat_logger.c sql/storage/store.c Branch: default Log Message:
merger with default diffs (truncated from 356 to 300 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -108,7 +108,7 @@ static char *log_commands[] = { typedef struct logformat_t { char flag; int tid; - int nr; + lng nr; } logformat; #define LOGFILE "log" @@ -138,10 +138,24 @@ logbat_new(int tt, BUN size) } static int +log_read_format_old(logger *l, logformat *data) +{ + int nr = 0; + int ok = mnstr_read(l->log, &data->flag, 1, 1) == 1 && + mnstr_readInt(l->log, &nr) == 1 && + mnstr_readInt(l->log, &data->tid) == 1; + data->nr = nr; + return ok; +} + +static int log_read_format(logger *l, logformat *data) { + if (l->postfuncp) /* we need to convert from the old logformat, + needs to be removed once we released Aug2014 */ + return log_read_format_old(l, data); return mnstr_read(l->log, &data->flag, 1, 1) == 1 && - mnstr_readInt(l->log, &data->nr) == 1 && + mnstr_readLng(l->log, &data->nr) == 1 && mnstr_readInt(l->log, &data->tid) == 1; } @@ -149,7 +163,7 @@ static int log_write_format(logger *l, logformat *data) { if (mnstr_write(l->log, &data->flag, 1, 1) == 1 && - mnstr_writeInt(l->log, data->nr) && + mnstr_writeLng(l->log, data->nr) && mnstr_writeInt(l->log, data->tid)) return LOG_OK; fprintf(stderr, "!ERROR: log_write_format: write failed\n"); @@ -246,7 +260,7 @@ la_bat_clear(logger *lg, logaction *la) static int log_read_seq(logger *lg, logformat *l) { - int seq = l->nr; + lng seq = l->nr; lng val; BUN p; @@ -273,7 +287,7 @@ log_read_updates(logger *lg, trans *tr, int ht = -1, tt = -1, hseq = 0, tseq = 0; if (lg->debug & 1) - fprintf(stderr, "#logger found log_read_updates %s %s %d\n", name, l->flag == LOG_INSERT ? "insert" : l->flag == LOG_DELETE ? "delete" : "update", l->nr); + fprintf(stderr, "#logger found log_read_updates %s %s " LLFMT "\n", name, l->flag == LOG_INSERT ? "insert" : l->flag == LOG_DELETE ? "delete" : "update", l->nr); if (b) { ht = b->htype; @@ -806,7 +820,7 @@ logger_readlog(logger *lg, char *filenam fprintf(stderr, "%s", log_commands[(int) l.flag]); else fprintf(stderr, "%d", l.flag); - fprintf(stderr, " %d %d", l.tid, l.nr); + fprintf(stderr, " %d " LLFMT, l.tid, l.nr); if (name) fprintf(stderr, " %s", name); fprintf(stderr, "\n"); @@ -818,7 +832,7 @@ logger_readlog(logger *lg, char *filenam case LOG_START: if (l.nr > lg->tid) lg->tid = l.nr; - tr = tr_create(tr, l.nr); + tr = tr_create(tr, (int)l.nr); if (lg->debug & 1) fprintf(stderr, "#logger tstart %d\n", tr->tid); break; @@ -1766,8 +1780,8 @@ log_delta(logger *lg, BAT *b, char *name l.tid = lg->tid; nr = (BUNlast(b) - BUNfirst(b)); - assert(nr <= GDK_int_max); - l.nr = (int) nr; + assert(nr <= GDK_lng_max); + l.nr = nr; lg->changes += l.nr; if (l.nr) { @@ -1789,7 +1803,7 @@ log_delta(logger *lg, BAT *b, char *name } if (lg->debug & 1) - fprintf(stderr, "#Logged %s %d inserts\n", name, l.nr); + fprintf(stderr, "#Logged %s " LLFMT " inserts\n", name, l.nr); } if (ok == GDK_FAIL) fprintf(stderr, "!ERROR: log_delta: write failed\n"); @@ -1809,7 +1823,7 @@ log_bat(logger *lg, BAT *b, char *name) } l.tid = lg->tid; - l.nr = (int) (BUNlast(b) - b->batInserted); + l.nr = (BUNlast(b) - b->batInserted); lg->changes += l.nr; if (l.nr) { @@ -1840,9 +1854,9 @@ log_bat(logger *lg, BAT *b, char *name) } if (lg->debug & 1) - fprintf(stderr, "#Logged %s %d inserts\n", name, l.nr); + fprintf(stderr, "#Logged %s " LLFMT " inserts\n", name, l.nr); } - l.nr = (int) (b->batFirst - b->batDeleted); + l.nr = (b->batFirst - b->batDeleted); lg->changes += l.nr; if (l.nr && ok == GDK_SUCCEED) { @@ -1864,7 +1878,7 @@ log_bat(logger *lg, BAT *b, char *name) } if (lg->debug & 1) - fprintf(stderr, "#Logged %s %d deletes\n", name, l.nr); + fprintf(stderr, "#Logged %s " LLFMT " deletes\n", name, l.nr); } if (ok == GDK_FAIL) fprintf(stderr, "!ERROR: log_bat: write failed\n"); diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h --- a/gdk/gdk_logger.h +++ b/gdk/gdk_logger.h @@ -25,7 +25,7 @@ typedef struct logaction { int type; /* type of change */ - int nr; + lng nr; int ht; /* vid(-1),void etc */ int tt; lng id; @@ -49,7 +49,7 @@ typedef void (*postversionfix_fptr)(void typedef struct logger { int debug; - size_t changes; + lng changes; int version; lng id; int tid; diff --git a/gdk/gdk_sample.c b/gdk/gdk_sample.c --- a/gdk/gdk_sample.c +++ b/gdk/gdk_sample.c @@ -60,7 +60,7 @@ static int OIDTreeLookup(struct oidtreen } static struct oidtreenode* OIDTreeNew(BUN oid) { - struct oidtreenode *node = malloc(sizeof(struct oidtreenode)); + struct oidtreenode *node = GDKmalloc(sizeof(struct oidtreenode)); if (node == NULL) { GDKerror("#BATsample: memory allocation error"); return NULL ; @@ -102,7 +102,7 @@ static void OIDTreeDestroy(struct oidtre if (node->right != NULL) { OIDTreeDestroy(node->right); } - free(node); + GDKfree(node); } @@ -149,7 +149,7 @@ BATsample(BAT *b, BUN n) { struct oidtreenode* ttree; do { /* generate a new random OID */ - candoid = minoid + DRAND * (maxoid - minoid); + candoid = (BUN) (minoid + DRAND * (maxoid - minoid)); /* if that candidate OID was already generated, try again */ } while (OIDTreeLookup(tree, candoid)); ttree = OIDTreeInsert(tree, candoid); diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -600,11 +600,7 @@ sql_update_feb2013_sp3(Client c) /* * TODO - * rewrite args table, ie add vararg and inout columns * update all table functions, ie make them type F_UNION - * update columns view, ie change storage_type-int into storage - varchar - * remove table return types (#..), ie tt_generated from _tables - * drop declared schema. */ static str sql_update_jan2014(Client c) @@ -617,8 +613,13 @@ sql_update_jan2014(Client c) if (schvar) schema = strdup(schvar->val.sval); + pos += snprintf(buf + pos, bufsize - pos, "set schema \"sys\";\n"); + /* remove table return types (#..), ie tt_generated from _tables/_columns */ + pos += snprintf(buf + pos, bufsize - pos, "delete from _columns where table_id in (select id from _tables where name like '#%%');\n"); + pos += snprintf(buf + pos, bufsize - pos, "delete from _tables where name like '#%%';\n"); + /* replaced 15_history.sql by 15_querylog.sql */ pos += snprintf(buf + pos, bufsize - pos, "drop procedure sys.resetHistory;\n"); pos += snprintf(buf + pos, bufsize - pos, "drop procedure sys.keepCall;\n"); @@ -849,10 +850,13 @@ sql_update_default(Client c) { size_t bufsize = 8192, pos = 0; char *buf = GDKmalloc(bufsize), *err = NULL; - ValRecord *schvar = stack_get_var(((backend *) c->sqlcontext)->mvc, "current_schema"); + mvc *sql = ((backend*) c->sqlcontext)->mvc; + ValRecord *schvar = stack_get_var(sql, "current_schema"); char *schema = NULL; char *fullname; FILE *fp; + sql_table *t; + sql_schema *s; if (schvar) schema = strdup(schvar->val.sval); @@ -891,6 +895,13 @@ sql_update_default(Client c) } /* change to 75_storage functions */ + s = mvc_bind_schema(sql, "sys"); + if (s && (t = mvc_bind_table(sql, s, "storage")) != NULL) + t->system = 0; + if (s && (t = mvc_bind_table(sql, s, "storagemodel")) != NULL) + t->system = 0; + if (s && (t = mvc_bind_table(sql, s, "tablestoragemodel")) != NULL) + t->system = 0; pos += snprintf(buf + pos, bufsize - pos, "update sys._tables set system = false where name in ('storage','storagemodel','tablestoragemodel') and schema_id = (select id from sys.schemas where name = 'sys');\n"); pos += snprintf(buf + pos, bufsize - pos, "drop view sys.storage;\n"); pos += snprintf(buf + pos, bufsize - pos, "drop function sys.storage();\n"); @@ -901,6 +912,11 @@ sql_update_default(Client c) pos += snprintf(buf + pos, bufsize - pos, "create function sys.storage() returns table (\"schema\" string, \"table\" string, \"column\" string, \"type\" string, location string, \"count\" bigint, typewidth int, columnsize bigint, heapsize bigint, hashes bigint, imprints bigint, sorted boolean) external name sql.storage;\n"); pos += snprintf(buf + pos, bufsize - pos, "create view sys.storage as select * from sys.storage();\n"); + + pos += snprintf(buf + pos, bufsize - pos, "create function sys.hashsize(b boolean, i bigint) returns bigint begin if b = true then return 8 * i; end if; return 0; end;"); + + pos += snprintf(buf + pos, bufsize - pos, "create function sys.imprintsize(i bigint, nme string) returns bigint begin if nme = 'boolean' or nme = 'tinyint' or nme = 'smallint' or nme = 'int' or nme = 'bigint' or nme = 'decimal' or nme = 'date' or nme = 'timestamp' or nme = 'real' or nme = 'double' then return cast( i * 0.12 as bigint); end if ; return 0; end;"); + pos += snprintf(buf + pos, bufsize - pos, "create function sys.storagemodel() returns table (" " \"schema\" string, \"table\" string, \"column\" string, \"type\" string, \"count\" bigint," " columnsize bigint, heapsize bigint, hashes bigint, imprints bigint, sorted boolean)" @@ -920,7 +936,7 @@ sql_update_default(Client c) " sum(hashes) as hashes," " sum(imprints) as imprints," " sum(case when sorted = false then 8 * count else 0 end) as auxillary" -"from sys.storagemodel() group by \"schema\",\"table\";\n"); +" from sys.storagemodel() group by \"schema\",\"table\";\n"); pos += snprintf(buf + pos, bufsize - pos, "create view sys.storagemodel as select * from sys.storagemodel();\n"); pos += snprintf(buf + pos, bufsize - pos, "update sys._tables set system = true where name in ('storage','storagemodel','tablestoragemodel') and schema_id = (select id from sys.schemas where name = 'sys');\n"); diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c --- a/sql/storage/bat/bat_logger.c +++ b/sql/storage/bat/bat_logger.c @@ -81,7 +81,7 @@ bl_postversion( void *lg) (void)lg; if (catalog_version == CATALOG_FEB2013) { /* we need to add the new schemas.system column */ - BAT *b, *b1; + BAT *b, *b1, *b2; BATiter bi; char *s = "sys", n[64]; BUN p,q; @@ -106,6 +106,57 @@ bl_postversion( void *lg) logger_add_bat(lg, b1, N(n, NULL, s, "schemas_system")); bat_destroy(b); bat_destroy(b1); + + /* add args.inout (default to ARG_IN) */ + b = temp_descriptor(logger_find_bat(lg, N(n, NULL, s, "args_name"))); + if (!b) + return; + bi = bat_iterator(b); + b1 = BATnew(TYPE_void, TYPE_bit, BATcount(b)); + BATseqbase(b1, b->hseqbase); + if (!b1) + return; + /* default to ARG_IN, names starting with 'res' are ARG_OUT */ + bi = bat_iterator(b); + for(p=BUNfirst(b), q=BUNlast(b); p<q; p++) { + bte v = ARG_IN; + char *name = BUNtail(bi, p); + if (strncmp(name, "res", 3) == 0) + v = ARG_OUT; + BUNappend(b1, &v, TRUE); + } + b1 = BATsetaccess(b1, BAT_READ); + logger_add_bat(lg, b1, N(n, NULL, s, "args_inout")); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list