Changeset: ee200eb4a7cd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ee200eb4a7cd
Added Files:
        sql/test/miscellaneous/Tests/alter_table_add_column.sql
        sql/test/miscellaneous/Tests/alter_table_add_column.stable.err
        sql/test/miscellaneous/Tests/alter_table_add_column.stable.out
Modified Files:
        sql/storage/store.c
        sql/test/miscellaneous/Tests/All
Branch: Nov2019
Log Message:

Merge with Apr2019 branch


diffs (234 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -5871,8 +5871,28 @@ sql_trans_rename_column(sql_trans *tr, s
 int
 sql_trans_drop_column(sql_trans *tr, sql_table *t, sqlid id, int drop_action)
 {
-       node *n = list_find_base_id(t->columns.set, id);
-       sql_column *col = n->data;
+       node *n = NULL;
+       sql_table *syscolumn = find_sql_table(find_sql_schema(tr, "sys"), 
"_columns");
+       sql_column *col = NULL, *cid = find_sql_column(syscolumn, "id"), *cnr = 
find_sql_column(syscolumn, "number");
+
+       for (node *nn = t->columns.set->h ; nn ; nn = nn->next) {
+               sql_column *next = (sql_column *) nn->data;
+               if (next->base.id == id) {
+                       n = nn;
+                       col = next;
+               } else if (col) { /* if the column to be dropped was found, 
decrease the column number for others after it */
+                       oid rid;
+                       next->colnr--;
+
+                       rid = table_funcs.column_find_row(tr, cid, 
&next->base.id, NULL);
+                       assert(!is_oid_nil(rid));
+                       table_funcs.column_update_value(tr, cnr, rid, 
&next->colnr);
+
+                       next->base.wtime = tr->wtime = tr->wstime;
+               }
+       }
+
+       assert(n && col); /* the column to be dropped must have been found */
 
        if (drop_action == DROP_CASCADE_START || drop_action == DROP_CASCADE) {
                sqlid *local_id = MNEW(sqlid);
diff --git a/sql/test/miscellaneous/Tests/All b/sql/test/miscellaneous/Tests/All
--- a/sql/test/miscellaneous/Tests/All
+++ b/sql/test/miscellaneous/Tests/All
@@ -8,3 +8,4 @@ groupby_expressions
 values
 with_update_stmts
 groupby_error
+alter_table_add_column
diff --git a/sql/test/miscellaneous/Tests/alter_table_add_column.sql 
b/sql/test/miscellaneous/Tests/alter_table_add_column.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/miscellaneous/Tests/alter_table_add_column.sql
@@ -0,0 +1,26 @@
+START TRANSACTION;
+
+CREATE SCHEMA "snctest";
+CREATE TABLE "snctest"."u_table" ("sys_id" CHAR(32));
+INSERT INTO "snctest"."u_table" VALUES (NULL);
+SELECT * FROM "snctest"."u_table";
+
+ALTER TABLE "snctest"."u_table" ADD "u_flat_string" varchar(40);
+ALTER TABLE "snctest"."u_table" ADD "sysc_u_flat_string" varchar(40);
+ALTER TABLE "snctest"."u_table" ADD "u_flat_moved" varchar(40);
+ALTER TABLE "snctest"."u_table" ADD "sysc_u_flat_moved" varchar(40);
+ALTER TABLE "snctest"."u_table" DROP "u_flat_string";
+ALTER TABLE "snctest"."u_table" DROP "sysc_u_flat_string";
+ALTER TABLE "snctest"."u_table" ADD "u_flat_string" varchar(40);
+ALTER TABLE "snctest"."u_table" ADD "sysc_u_flat_string" varchar(40);
+
+SELECT * FROM "snctest"."u_table";
+
+SELECT Columns.number, Columns.name, Columns.type, Columns.type_scale FROM 
sys.columns as Columns
+WHERE Columns.table_id = (SELECT Tables.id FROM sys.tables as Tables 
+                          WHERE Tables.schema_id = (SELECT Schema.id FROM 
sys.schemas as Schema WHERE Schema.name = 'snctest') AND Tables.name = 
'u_table') 
+ORDER BY Columns.number;
+
+SELECT * FROM "snctest"."u_table";
+
+ROLLBACK;
diff --git a/sql/test/miscellaneous/Tests/alter_table_add_column.stable.err 
b/sql/test/miscellaneous/Tests/alter_table_add_column.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/miscellaneous/Tests/alter_table_add_column.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'alter_table_add_column` in directory 'sql/test/miscellaneous` 
itself:
+
+
+# 09:54:48 >  
+# 09:54:48 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=34303" "--set" 
"mapi_usock=/var/tmp/mtest-15192/.s.monetdb.34303" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/home/ferreira/repositories/MonetDB-Apr2019/BUILD/var/MonetDB/mTests_sql_test_miscellaneous"
 "--set" "embedded_r=yes" "--set" "embedded_py=2" "--set" "embedded_c=true"
+# 09:54:48 >  
+
+# builtin opt  gdk_dbpath = 
/home/ferreira/repositories/MonetDB-Apr2019/BUILD/var/monetdb5/dbfarm/demo
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 34303
+# cmdline opt  mapi_usock = /var/tmp/mtest-15192/.s.monetdb.34303
+# cmdline opt  monet_prompt = 
+# cmdline opt  gdk_dbpath = 
/home/ferreira/repositories/MonetDB-Apr2019/BUILD/var/MonetDB/mTests_sql_test_miscellaneous
+# cmdline opt  embedded_r = yes
+# cmdline opt  embedded_py = 2
+# cmdline opt  embedded_c = true
+#main thread:!ERROR:MALException:client.quit:Server stopped
+
+# 09:54:49 >  
+# 09:54:49 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-15192" "--port=34303"
+# 09:54:49 >  
+
+
+# 09:54:49 >  
+# 09:54:49 >  "Done."
+# 09:54:49 >  
+
diff --git a/sql/test/miscellaneous/Tests/alter_table_add_column.stable.out 
b/sql/test/miscellaneous/Tests/alter_table_add_column.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/miscellaneous/Tests/alter_table_add_column.stable.out
@@ -0,0 +1,116 @@
+stdout of test 'alter_table_add_column` in directory 'sql/test/miscellaneous` 
itself:
+
+
+# 09:54:48 >  
+# 09:54:48 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=34303" "--set" 
"mapi_usock=/var/tmp/mtest-15192/.s.monetdb.34303" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/home/ferreira/repositories/MonetDB-Apr2019/BUILD/var/MonetDB/mTests_sql_test_miscellaneous"
 "--set" "embedded_r=yes" "--set" "embedded_py=2" "--set" "embedded_c=true"
+# 09:54:48 >  
+
+# MonetDB 5 server v11.33.12 (hg id: e994c3289040)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_miscellaneous', using 8 threads
+# Compiled for x86_64-pc-linux-gnu/64bit with 128bit integers
+# Found 15.527 GiB available main-memory.
+# Copyright (c) 1993 - July 2008 CWI.
+# Copyright (c) August 2008 - 2019 MonetDB B.V., all rights reserved
+# Visit https://www.monetdb.org/ for further information
+# Listening for connection requests on 
mapi:monetdb://localhost.localdomain:34303/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-15192/.s.monetdb.34303
+# MonetDB/GIS module loaded
+# SQL catalog created, loading sql scripts once
+# loading sql script: 09_like.sql
+# loading sql script: 10_math.sql
+# loading sql script: 11_times.sql
+# loading sql script: 12_url.sql
+# loading sql script: 13_date.sql
+# loading sql script: 14_inet.sql
+# loading sql script: 15_querylog.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 17_temporal.sql
+# loading sql script: 18_index.sql
+# loading sql script: 20_vacuum.sql
+# loading sql script: 21_dependency_views.sql
+# loading sql script: 22_clients.sql
+# loading sql script: 23_skyserver.sql
+# loading sql script: 25_debug.sql
+# loading sql script: 26_sysmon.sql
+# loading sql script: 27_rejects.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 39_analytics_hge.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 40_json.sql
+# loading sql script: 40_json_hge.sql
+# loading sql script: 41_md5sum.sql
+# loading sql script: 45_uuid.sql
+# loading sql script: 46_profiler.sql
+# loading sql script: 51_sys_schema_extension.sql
+# loading sql script: 60_wlcr.sql
+# loading sql script: 72_fits.sql
+# loading sql script: 74_netcdf.sql
+# loading sql script: 75_lidar.sql
+# loading sql script: 75_shp.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_statistics.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 80_udf_hge.sql
+# loading sql script: 85_bam.sql
+# loading sql script: 90_generator.sql
+# loading sql script: 90_generator_hge.sql
+# loading sql script: 99_system.sql
+# MonetDB/SQL module loaded
+# MonetDB/Python2 module loaded
+# MonetDB/R   module loaded
+
+# 11:44:58 >  
+# 11:44:58 >  "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-20708" "--port=35452"
+# 11:44:58 >  
+
+#START TRANSACTION;
+#CREATE SCHEMA "snctest";
+#CREATE TABLE "snctest"."u_table" ("sys_id" CHAR(32));
+#INSERT INTO "snctest"."u_table" VALUES (NULL);
+[ 1    ]
+#SELECT * FROM "snctest"."u_table";
+% snctest.u_table # table_name
+% sys_id # name
+% char # type
+% 32 # length
+[ NULL ]
+#ALTER TABLE "snctest"."u_table" ADD "u_flat_string" varchar(40);
+#ALTER TABLE "snctest"."u_table" ADD "sysc_u_flat_string" varchar(40);
+#ALTER TABLE "snctest"."u_table" ADD "u_flat_moved" varchar(40);
+#ALTER TABLE "snctest"."u_table" ADD "sysc_u_flat_moved" varchar(40);
+#ALTER TABLE "snctest"."u_table" DROP "u_flat_string";
+#ALTER TABLE "snctest"."u_table" DROP "sysc_u_flat_string";
+#ALTER TABLE "snctest"."u_table" ADD "u_flat_string" varchar(40);
+#ALTER TABLE "snctest"."u_table" ADD "sysc_u_flat_string" varchar(40);
+#SELECT * FROM "snctest"."u_table";
+% snctest.u_table,     snctest.u_table,        snctest.u_table,        
snctest.u_table,        snctest.u_table # table_name
+% sys_id,      u_flat_moved,   sysc_u_flat_moved,      u_flat_string,  
sysc_u_flat_string # name
+% char,        varchar,        varchar,        varchar,        varchar # type
+% 32,  0,      0,      0,      0 # length
+[ NULL,        NULL,   NULL,   NULL,   NULL    ]
+#SELECT Columns.number, Columns.name, Columns.type, Columns.type_scale FROM 
sys.columns as Columns
+#WHERE Columns.table_id = (SELECT Tables.id FROM sys.tables as Tables 
+#                          WHERE Tables.schema_id = (SELECT Schema.id FROM 
sys.schemas as Schema WHERE Schema.name = 'snctest') AND Tables.name = 
'u_table') 
+#ORDER BY Columns.number;
+% .columns,    .columns,       .columns,       .columns # table_name
+% number,      name,   type,   type_scale # name
+% int, varchar,        varchar,        int # type
+% 1,   18,     7,      1 # length
+[ 0,   "sys_id",       "char", 0       ]
+[ 1,   "u_flat_moved", "varchar",      0       ]
+[ 2,   "sysc_u_flat_moved",    "varchar",      0       ]
+[ 3,   "u_flat_string",        "varchar",      0       ]
+[ 4,   "sysc_u_flat_string",   "varchar",      0       ]
+#SELECT * FROM "snctest"."u_table";
+% snctest.u_table,     snctest.u_table,        snctest.u_table,        
snctest.u_table,        snctest.u_table # table_name
+% sys_id,      u_flat_moved,   sysc_u_flat_moved,      u_flat_string,  
sysc_u_flat_string # name
+% char,        varchar,        varchar,        varchar,        varchar # type
+% 32,  0,      0,      0,      0 # length
+[ NULL,        NULL,   NULL,   NULL,   NULL    ]
+#ROLLBACK;
+
+# 09:54:49 >  
+# 09:54:49 >  "Done."
+# 09:54:49 >  
+
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to