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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list