Changeset: f5b26ea51ea7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f5b26ea51ea7
Modified Files:
        sql/backends/monet5/sql_upgrades.c
        sql/storage/store.c
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.stable.out
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
Branch: out2in
Log Message:

Move new semantics column in sys.functions to end: makes upgrade easier.
Also, fix upgrade.


diffs (176 lines):

diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -80,13 +80,14 @@ sql_fix_system_tables(Client c, mvc *sql
                        pos += snprintf(buf + pos, bufsize - pos,
                                        "insert into sys.functions values"
                                        " (%d, '%s', '%s', '%s', %d, %d, false,"
-                                       " %s, %s, %d, %s);\n",
+                                       " %s, %s, %d, %s, %s);\n",
                                        func->base.id, func->base.name, 
func->imp,
                                        func->mod, (int) FUNC_LANG_INT, (int) 
func->type,
                                        func->varres ? "true" : "false",
                                        func->vararg ? "true" : "false",
                                        func->s ? func->s->base.id : s->base.id,
-                                       func->system ? "true" : "false");
+                                       func->system ? "true" : "false",
+                                       func->semantics ? "true" : "false");
                        arg = func->res->h->data;
                        pos += snprintf(buf + pos, bufsize - pos,
                                        "insert into sys.args values"
@@ -109,7 +110,7 @@ sql_fix_system_tables(Client c, mvc *sql
                        pos += snprintf(buf + pos, bufsize - pos,
                                        "insert into sys.functions values"
                                        " (%d, '%s', '%s', '%s',"
-                                       " %d, %d, %s, %s, %s, %d, %s);\n",
+                                       " %d, %d, %s, %s, %s, %d, %s, %s);\n",
                                        func->base.id, func->base.name,
                                        func->imp, func->mod, (int) 
FUNC_LANG_INT,
                                        (int) func->type,
@@ -117,7 +118,8 @@ sql_fix_system_tables(Client c, mvc *sql
                                        func->varres ? "true" : "false",
                                        func->vararg ? "true" : "false",
                                        func->s ? func->s->base.id : s->base.id,
-                                       func->system ? "true" : "false");
+                                       func->system ? "true" : "false",
+                                       func->semantics ? "true" : "false");
                        if (func->res) {
                                for (m = func->res->h; m; m = m->next, 
number++) {
                                        arg = m->data;
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1047,8 +1047,6 @@ load_func(sql_trans *tr, sql_schema *s, 
        v = table_funcs.column_find_value(tr, find_sql_column(funcs, "type"), 
rid);
        t->sql = (t->lang==FUNC_LANG_SQL||t->lang==FUNC_LANG_MAL);
        t->type = (sql_ftype) *(int *)v;                        _DELETE(v);
-       v = table_funcs.column_find_value(tr, find_sql_column(funcs, 
"semantics"), rid);
-       t->semantics = *(bit *)v;               _DELETE(v);
        v = table_funcs.column_find_value(tr, find_sql_column(funcs, 
"side_effect"), rid);
        t->side_effect = *(bit *)v;             _DELETE(v);
        if (t->type==F_FILT)
@@ -1059,6 +1057,8 @@ load_func(sql_trans *tr, sql_schema *s, 
        t->vararg = *(bit *)v;  _DELETE(v);
        v = table_funcs.column_find_value(tr, find_sql_column(funcs, "system"), 
rid);
        t->system = *(bit *)v;  _DELETE(v);
+       v = table_funcs.column_find_value(tr, find_sql_column(funcs, 
"semantics"), rid);
+       t->semantics = *(bit *)v;               _DELETE(v);
        t->res = NULL;
        t->s = s;
        t->fix_scale = SCALE_EQ;
@@ -1530,7 +1530,7 @@ insert_functions(sql_trans *tr, sql_tabl
                int number = 0, ftype = (int) f->type, flang = (int) 
FUNC_LANG_INT;
                sqlid next_schema = f->s ? f->s->base.id : 0;
 
-               table_funcs.table_insert(tr, sysfunc, &f->base.id, 
f->base.name, f->imp, f->mod, &flang, &ftype, &f->semantics, &se, &f->varres, 
&f->vararg, &next_schema, &f->system);
+               table_funcs.table_insert(tr, sysfunc, &f->base.id, 
f->base.name, f->imp, f->mod, &flang, &ftype, &se, &f->varres, &f->vararg, 
&next_schema, &f->system, &f->semantics);
                if (f->res)
                        insert_args(tr, sysarg, f->res, f->base.id, "res_%d", 
&number);
                if (f->ops)
@@ -1891,12 +1891,12 @@ store_load(backend_stack stk) {
 
        /* func, proc, aggr or filter */
        bootstrap_create_column(tr, t, "type", "int", 32);
-       bootstrap_create_column(tr, t, "semantics", "boolean", 1);
        bootstrap_create_column(tr, t, "side_effect", "boolean", 1);
        bootstrap_create_column(tr, t, "varres", "boolean", 1);
        bootstrap_create_column(tr, t, "vararg", "boolean", 1);
        bootstrap_create_column(tr, t, "schema_id", "int", 32);
        bootstrap_create_column(tr, t, "system", "boolean", 1);
+       bootstrap_create_column(tr, t, "semantics", "boolean", 1);
 
        args = t = bootstrap_create_table(tr, s, "args");
        bootstrap_create_column(tr, t, "id", "int", 32);
@@ -5645,8 +5645,8 @@ sql_trans_create_func(sql_trans *tr, sql
        t->s = s;
 
        cs_add(&s->funcs, t, TR_NEW);
-       table_funcs.table_insert(tr, sysfunc, &t->base.id, t->base.name, 
query?query:t->imp, t->mod, &flang, &ftype, &t->semantics, &se,
-                                                        &t->varres, 
&t->vararg, &s->base.id, &t->system);
+       table_funcs.table_insert(tr, sysfunc, &t->base.id, t->base.name, 
query?query:t->imp, t->mod, &flang, &ftype, &se,
+                                                        &t->varres, 
&t->vararg, &s->base.id, &t->system, &t->semantics);
        if (t->res) for (n = t->res->h; n; n = n->next, number++) {
                sql_arg *a = n->data;
                sqlid id = next_oid();
diff --git 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.stable.out
 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.stable.out
--- 
a/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.stable.out
+++ 
b/sql/test/BugDay_2005-10-06_2.9.3/Tests/CrashMe_SQL_server_crash-2.SF-921673.stable.out
@@ -70,12 +70,12 @@ stdout of test 'CrashMe_SQL_server_crash
 [ NULL,        "sys",  "functions",    "mod",  "varchar",      8196,   0,      
0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      4,      NULL,   
NULL,   NULL    ]
 [ NULL,        "sys",  "functions",    "language",     "int",  32,     0,      
0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      5,      NULL,   
NULL,   NULL    ]
 [ NULL,        "sys",  "functions",    "type", "int",  32,     0,      0,      
10,     NULL,   NULL,   NULL,   0,      0,      0,      6,      NULL,   NULL,   
NULL    ]
-[ NULL,        "sys",  "functions",    "semantics",    "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      7,      
NULL,   NULL,   NULL    ]
-[ NULL,        "sys",  "functions",    "side_effect",  "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      8,      
NULL,   NULL,   NULL    ]
-[ NULL,        "sys",  "functions",    "varres",       "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      9,      
NULL,   NULL,   NULL    ]
-[ NULL,        "sys",  "functions",    "vararg",       "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      10,     
NULL,   NULL,   NULL    ]
-[ NULL,        "sys",  "functions",    "schema_id",    "int",  32,     0,      
0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      11,     NULL,   
NULL,   NULL    ]
-[ NULL,        "sys",  "functions",    "system",       "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      12,     
NULL,   NULL,   NULL    ]
+[ NULL,        "sys",  "functions",    "side_effect",  "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      7,      
NULL,   NULL,   NULL    ]
+[ NULL,        "sys",  "functions",    "varres",       "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      8,      
NULL,   NULL,   NULL    ]
+[ NULL,        "sys",  "functions",    "vararg",       "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      9,      
NULL,   NULL,   NULL    ]
+[ NULL,        "sys",  "functions",    "schema_id",    "int",  32,     0,      
0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      10,     NULL,   
NULL,   NULL    ]
+[ NULL,        "sys",  "functions",    "system",       "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      11,     
NULL,   NULL,   NULL    ]
+[ NULL,        "sys",  "functions",    "semantics",    "boolean",      1,      
0,      0,      10,     NULL,   NULL,   NULL,   0,      0,      0,      12,     
NULL,   NULL,   NULL    ]
 [ NULL,        "sys",  "keys", "id",   "int",  32,     0,      0,      10,     
NULL,   NULL,   NULL,   0,      0,      0,      1,      NULL,   NULL,   NULL    
]
 [ NULL,        "sys",  "keys", "table_id",     "int",  32,     0,      0,      
10,     NULL,   NULL,   NULL,   0,      0,      0,      2,      NULL,   NULL,   
NULL    ]
 [ NULL,        "sys",  "keys", "type", "int",  32,     0,      0,      10,     
NULL,   NULL,   NULL,   0,      0,      0,      3,      NULL,   NULL,   NULL    
]
diff --git a/sql/test/emptydb/Tests/check.stable.out 
b/sql/test/emptydb/Tests/check.stable.out
--- a/sql/test/emptydb/Tests/check.stable.out
+++ b/sql/test/emptydb/Tests/check.stable.out
@@ -898,7 +898,7 @@ CREATE TABLE "sys"."dependencies" ("id" 
 CREATE TABLE "sys"."dependency_types" ("dependency_type_id" SMALLINT NOT NULL, 
"dependency_type_name" VARCHAR(15) NOT NULL, CONSTRAINT 
"dependency_types_dependency_type_id_pkey" PRIMARY KEY ("dependency_type_id"), 
CONSTRAINT "dependency_types_dependency_type_name_unique" UNIQUE 
("dependency_type_name"));
 CREATE TABLE "sys"."function_languages" ("language_id" SMALLINT NOT NULL, 
"language_name" VARCHAR(20) NOT NULL, "language_keyword" VARCHAR(20), 
CONSTRAINT "function_languages_language_id_pkey" PRIMARY KEY ("language_id"), 
CONSTRAINT "function_languages_language_name_unique" UNIQUE ("language_name"));
 CREATE TABLE "sys"."function_types" ("function_type_id" SMALLINT NOT NULL, 
"function_type_name" VARCHAR(30) NOT NULL, "function_type_keyword" VARCHAR(30) 
NOT NULL, CONSTRAINT "function_types_function_type_id_pkey" PRIMARY KEY 
("function_type_id"), CONSTRAINT "function_types_function_type_name_unique" 
UNIQUE ("function_type_name"));
-CREATE TABLE "sys"."functions" ("id" INTEGER, "name" VARCHAR(256), "func" 
VARCHAR(8196), "mod" VARCHAR(8196), "language" INTEGER, "type" INTEGER, 
"side_effect" BOOLEAN, "varres" BOOLEAN, "vararg" BOOLEAN, "schema_id" INTEGER, 
"system" BOOLEAN);
+CREATE TABLE "sys"."functions" ("id" INTEGER, "name" VARCHAR(256), "func" 
VARCHAR(8196), "mod" VARCHAR(8196), "language" INTEGER, "type" INTEGER, 
"side_effect" BOOLEAN, "varres" BOOLEAN, "vararg" BOOLEAN, "schema_id" INTEGER, 
"system" BOOLEAN, "semantics" BOOLEAN);
 CREATE TABLE "sys"."idxs" ("id" INTEGER, "table_id" INTEGER, "type" INTEGER, 
"name" VARCHAR(1024));
 CREATE TABLE "sys"."index_types" ("index_type_id" SMALLINT NOT NULL, 
"index_type_name" VARCHAR(25) NOT NULL, CONSTRAINT 
"index_types_index_type_id_pkey" PRIMARY KEY ("index_type_id"), CONSTRAINT 
"index_types_index_type_name_unique" UNIQUE ("index_type_name"));
 CREATE TABLE "sys"."key_types" ("key_type_id" SMALLINT NOT NULL, 
"key_type_name" VARCHAR(15) NOT NULL, CONSTRAINT "key_types_key_type_id_pkey" 
PRIMARY KEY ("key_type_id"), CONSTRAINT "key_types_key_type_name_unique" UNIQUE 
("key_type_name"));
@@ -1892,6 +1892,7 @@ drop function pcre_replace(string, strin
 [ "sys._columns",      "functions",    "vararg",       "boolean",      1,      
0,      NULL,   true,   8,      NULL    ]
 [ "sys._columns",      "functions",    "schema_id",    "int",  32,     0,      
NULL,   true,   9,      NULL    ]
 [ "sys._columns",      "functions",    "system",       "boolean",      1,      
0,      NULL,   true,   10,     NULL    ]
+[ "sys._columns",      "functions",    "semantics",    "boolean",      1,      
0,      NULL,   true,   11,     NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_catalog",      
"varchar",      1,      0,      NULL,   true,   0,      NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_schema",       
"varchar",      1024,   0,      NULL,   true,   1,      NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_name", "varchar",      
1024,   0,      NULL,   true,   2,      NULL    ]
diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit 
b/sql/test/emptydb/Tests/check.stable.out.32bit
--- a/sql/test/emptydb/Tests/check.stable.out.32bit
+++ b/sql/test/emptydb/Tests/check.stable.out.32bit
@@ -898,7 +898,7 @@ CREATE TABLE "sys"."dependencies" ("id" 
 CREATE TABLE "sys"."dependency_types" ("dependency_type_id" SMALLINT NOT NULL, 
"dependency_type_name" VARCHAR(15) NOT NULL, CONSTRAINT 
"dependency_types_dependency_type_id_pkey" PRIMARY KEY ("dependency_type_id"), 
CONSTRAINT "dependency_types_dependency_type_name_unique" UNIQUE 
("dependency_type_name"));
 CREATE TABLE "sys"."function_languages" ("language_id" SMALLINT NOT NULL, 
"language_name" VARCHAR(20) NOT NULL, "language_keyword" VARCHAR(20), 
CONSTRAINT "function_languages_language_id_pkey" PRIMARY KEY ("language_id"), 
CONSTRAINT "function_languages_language_name_unique" UNIQUE ("language_name"));
 CREATE TABLE "sys"."function_types" ("function_type_id" SMALLINT NOT NULL, 
"function_type_name" VARCHAR(30) NOT NULL, "function_type_keyword" VARCHAR(30) 
NOT NULL, CONSTRAINT "function_types_function_type_id_pkey" PRIMARY KEY 
("function_type_id"), CONSTRAINT "function_types_function_type_name_unique" 
UNIQUE ("function_type_name"));
-CREATE TABLE "sys"."functions" ("id" INTEGER, "name" VARCHAR(256), "func" 
VARCHAR(8196), "mod" VARCHAR(8196), "language" INTEGER, "type" INTEGER, 
"side_effect" BOOLEAN, "varres" BOOLEAN, "vararg" BOOLEAN, "schema_id" INTEGER, 
"system" BOOLEAN);
+CREATE TABLE "sys"."functions" ("id" INTEGER, "name" VARCHAR(256), "func" 
VARCHAR(8196), "mod" VARCHAR(8196), "language" INTEGER, "type" INTEGER, 
"side_effect" BOOLEAN, "varres" BOOLEAN, "vararg" BOOLEAN, "schema_id" INTEGER, 
"system" BOOLEAN, "semantics" BOOLEAN);
 CREATE TABLE "sys"."idxs" ("id" INTEGER, "table_id" INTEGER, "type" INTEGER, 
"name" VARCHAR(1024));
 CREATE TABLE "sys"."index_types" ("index_type_id" SMALLINT NOT NULL, 
"index_type_name" VARCHAR(25) NOT NULL, CONSTRAINT 
"index_types_index_type_id_pkey" PRIMARY KEY ("index_type_id"), CONSTRAINT 
"index_types_index_type_name_unique" UNIQUE ("index_type_name"));
 CREATE TABLE "sys"."key_types" ("key_type_id" SMALLINT NOT NULL, 
"key_type_name" VARCHAR(15) NOT NULL, CONSTRAINT "key_types_key_type_id_pkey" 
PRIMARY KEY ("key_type_id"), CONSTRAINT "key_types_key_type_name_unique" UNIQUE 
("key_type_name"));
@@ -1892,6 +1892,7 @@ drop function pcre_replace(string, strin
 [ "sys._columns",      "functions",    "vararg",       "boolean",      1,      
0,      NULL,   true,   8,      NULL    ]
 [ "sys._columns",      "functions",    "schema_id",    "int",  32,     0,      
NULL,   true,   9,      NULL    ]
 [ "sys._columns",      "functions",    "system",       "boolean",      1,      
0,      NULL,   true,   10,     NULL    ]
+[ "sys._columns",      "functions",    "semantics",    "boolean",      1,      
0,      NULL,   true,   11,     NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_catalog",      
"varchar",      1,      0,      NULL,   true,   0,      NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_schema",       
"varchar",      1024,   0,      NULL,   true,   1,      NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_name", "varchar",      
1024,   0,      NULL,   true,   2,      NULL    ]
diff --git a/sql/test/emptydb/Tests/check.stable.out.int128 
b/sql/test/emptydb/Tests/check.stable.out.int128
--- a/sql/test/emptydb/Tests/check.stable.out.int128
+++ b/sql/test/emptydb/Tests/check.stable.out.int128
@@ -898,7 +898,7 @@ CREATE TABLE "sys"."dependencies" ("id" 
 CREATE TABLE "sys"."dependency_types" ("dependency_type_id" SMALLINT NOT NULL, 
"dependency_type_name" VARCHAR(15) NOT NULL, CONSTRAINT 
"dependency_types_dependency_type_id_pkey" PRIMARY KEY ("dependency_type_id"), 
CONSTRAINT "dependency_types_dependency_type_name_unique" UNIQUE 
("dependency_type_name"));
 CREATE TABLE "sys"."function_languages" ("language_id" SMALLINT NOT NULL, 
"language_name" VARCHAR(20) NOT NULL, "language_keyword" VARCHAR(20), 
CONSTRAINT "function_languages_language_id_pkey" PRIMARY KEY ("language_id"), 
CONSTRAINT "function_languages_language_name_unique" UNIQUE ("language_name"));
 CREATE TABLE "sys"."function_types" ("function_type_id" SMALLINT NOT NULL, 
"function_type_name" VARCHAR(30) NOT NULL, "function_type_keyword" VARCHAR(30) 
NOT NULL, CONSTRAINT "function_types_function_type_id_pkey" PRIMARY KEY 
("function_type_id"), CONSTRAINT "function_types_function_type_name_unique" 
UNIQUE ("function_type_name"));
-CREATE TABLE "sys"."functions" ("id" INTEGER, "name" VARCHAR(256), "func" 
VARCHAR(8196), "mod" VARCHAR(8196), "language" INTEGER, "type" INTEGER, 
"side_effect" BOOLEAN, "varres" BOOLEAN, "vararg" BOOLEAN, "schema_id" INTEGER, 
"system" BOOLEAN);
+CREATE TABLE "sys"."functions" ("id" INTEGER, "name" VARCHAR(256), "func" 
VARCHAR(8196), "mod" VARCHAR(8196), "language" INTEGER, "type" INTEGER, 
"side_effect" BOOLEAN, "varres" BOOLEAN, "vararg" BOOLEAN, "schema_id" INTEGER, 
"system" BOOLEAN, "semantics" BOOLEAN);
 CREATE TABLE "sys"."idxs" ("id" INTEGER, "table_id" INTEGER, "type" INTEGER, 
"name" VARCHAR(1024));
 CREATE TABLE "sys"."index_types" ("index_type_id" SMALLINT NOT NULL, 
"index_type_name" VARCHAR(25) NOT NULL, CONSTRAINT 
"index_types_index_type_id_pkey" PRIMARY KEY ("index_type_id"), CONSTRAINT 
"index_types_index_type_name_unique" UNIQUE ("index_type_name"));
 CREATE TABLE "sys"."key_types" ("key_type_id" SMALLINT NOT NULL, 
"key_type_name" VARCHAR(15) NOT NULL, CONSTRAINT "key_types_key_type_id_pkey" 
PRIMARY KEY ("key_type_id"), CONSTRAINT "key_types_key_type_name_unique" UNIQUE 
("key_type_name"));
@@ -1913,6 +1913,7 @@ drop function pcre_replace(string, strin
 [ "sys._columns",      "functions",    "vararg",       "boolean",      1,      
0,      NULL,   true,   8,      NULL    ]
 [ "sys._columns",      "functions",    "schema_id",    "int",  32,     0,      
NULL,   true,   9,      NULL    ]
 [ "sys._columns",      "functions",    "system",       "boolean",      1,      
0,      NULL,   true,   10,     NULL    ]
+[ "sys._columns",      "functions",    "semantics",    "boolean",      1,      
0,      NULL,   true,   11,     NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_catalog",      
"varchar",      1,      0,      NULL,   true,   0,      NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_schema",       
"varchar",      1024,   0,      NULL,   true,   1,      NULL    ]
 [ "sys._columns",      "geometry_columns",     "f_table_name", "varchar",      
1024,   0,      NULL,   true,   2,      NULL    ]
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to