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