Changeset: 9cfbde226296 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9cfbde226296
Added Files:
        sql/test/rename/Tests/All
        sql/test/rename/Tests/rename00.py
        sql/test/rename/Tests/rename00.stable.err
        sql/test/rename/Tests/rename00.stable.out
        sql/test/rename/Tests/rename01.sql
        sql/test/rename/Tests/rename01.stable.err
        sql/test/rename/Tests/rename01.stable.out
        sql/test/rename/Tests/rename02.sql
        sql/test/rename/Tests/rename02.stable.err
        sql/test/rename/Tests/rename02.stable.out
        sql/test/rename/Tests/rename03.sql
        sql/test/rename/Tests/rename03.stable.err
        sql/test/rename/Tests/rename03.stable.out
        sql/test/rename/Tests/rename04.sql
        sql/test/rename/Tests/rename04.stable.err
        sql/test/rename/Tests/rename04.stable.out
        sql/test/rename/Tests/rename05.sql
        sql/test/rename/Tests/rename05.stable.err
        sql/test/rename/Tests/rename05.stable.out
        sql/test/rename/Tests/rename06.sql
        sql/test/rename/Tests/rename06.stable.err
        sql/test/rename/Tests/rename06.stable.out
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/mhelp.c
        monetdb5/modules/mal/wlc.mal
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_cat.h
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sqlcatalog.mal
        sql/backends/monet5/wlr.mal
        sql/common/sql_changeset.c
        sql/common/sql_list.c
        sql/common/sql_types.c
        sql/include/sql_catalog.h
        sql/include/sql_list.h
        sql/include/sql_relation.h
        sql/server/rel_schema.c
        sql/server/rel_semantic.c
        sql/server/rel_sequence.c
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/server/sql_parser.h
        sql/server/sql_parser.y
        sql/server/sql_partition.c
        sql/server/sql_partition.h
        sql/storage/bat/bat_storage.c
        sql/storage/sql_storage.h
        sql/storage/store.c
        sql/storage/store_sequence.c
        sql/test/pg_regress/Tests/alter_table.stable.err
        sql/test/pg_regress/Tests/alter_table.stable.out
        sql/test/pg_regress/Tests/drop.stable.err
Branch: default
Log Message:

Merged branch rename-sql into default.


diffs (truncated from 4668 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -11097,6 +11097,9 @@ Ready.
 [ "sqlcatalog",        "grant",        "pattern sqlcatalog.grant(sname:str, 
tbl:str, grantee:str, privs:int, cname:str, gr:int, grantor:int):void ",   
"SQLgrant;",    "Catalog operation grant"       ]
 [ "sqlcatalog",        "grant_function",       "pattern 
sqlcatalog.grant_function(sname:str, fcnid:int, grantee:str, privs:int, 
grant:int, grantor:int):void ",        "SQLgrant_function;",   "Catalog 
operation grant_function"      ]
 [ "sqlcatalog",        "grant_roles",  "pattern 
sqlcatalog.grant_roles(sname:str, auth:str, grantor:int, admin:int):void ",    
"SQLgrant_roles;",      "Catalog operation grant_roles" ]
+[ "sqlcatalog",        "rename_column",        "pattern 
sqlcatalog.rename_column(sname:str, tname:str, cname:str, newnme:str):void ",  
"SQLrename_column;",    "Catalog operation rename_column"       ]
+[ "sqlcatalog",        "rename_schema",        "pattern 
sqlcatalog.rename_schema(sname:str, newnme:str):void ",        
"SQLrename_schema;",    "Catalog operation rename_schema"       ]
+[ "sqlcatalog",        "rename_table", "pattern 
sqlcatalog.rename_table(sname:str, tname:str, newnme:str):void ",      
"SQLrename_table;",     "Catalog operation rename_table"        ]
 [ "sqlcatalog",        "rename_user",  "pattern 
sqlcatalog.rename_user(sname:str, newnme:str, action:int):void ",      
"SQLrename_user;",      "Catalog operation rename_user" ]
 [ "sqlcatalog",        "revoke",       "pattern sqlcatalog.revoke(sname:str, 
tbl:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ",     
  "SQLrevoke;",   "Catalog operation revoke"      ]
 [ "sqlcatalog",        "revoke_function",      "pattern 
sqlcatalog.revoke_function(sname:str, fcnid:int, grantee:str, privs:int, 
grant:int, grantor:int):void ",       "SQLrevoke_function;",  "Catalog 
operation revoke_function"     ]
@@ -11328,6 +11331,9 @@ Ready.
 [ "wlc",       "master",       "pattern wlc.master():void ",   "WLCmaster;",   
"Activate the workload-capture-replay process"  ]
 [ "wlc",       "master",       "pattern wlc.master(path:str):void ",   
"WLCmaster;",   "Activate the workload-capture-replay process. Use a different 
location for the logs."  ]
 [ "wlc",       "query",        "pattern wlc.query(q:str):void ",       
"WLCquery;",    "Keep the queries for replay."  ]
+[ "wlc",       "rename_column",        "pattern wlc.rename_column(sname:str, 
tname:str, cname:str, newnme:str):void ", "WLCgeneric;",  "Catalog operation 
rename_column"       ]
+[ "wlc",       "rename_schema",        "pattern wlc.rename_schema(sname:str, 
newnme:str):void ",       "WLCgeneric;",  "Catalog operation rename_schema"     
  ]
+[ "wlc",       "rename_table", "pattern wlc.rename_table(sname:str, tname:str, 
newnme:str):void ",     "WLCgeneric;",  "Catalog operation rename_table"        
]
 [ "wlc",       "rename_user",  "pattern wlc.rename_user(sname:str, newnme:str, 
action:int):void ",     "WLCgeneric;",  "Catalog operation rename_user" ]
 [ "wlc",       "revoke",       "pattern wlc.revoke(sname:str, tbl:str, 
grantee:str, privs:int, cname:str, grant:int, grantor:int):void ",      
"WLCgeneric;",  "Catalog operation revoke"      ]
 [ "wlc",       "revoke_function",      "pattern wlc.revoke_function(sname:str, 
fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ",      
"WLCgeneric;",  "Catalog operation revoke_function"     ]
@@ -11385,6 +11391,9 @@ Ready.
 [ "wlr",       "grant",        "pattern wlr.grant(sname:str, tbl:str, 
grantee:str, privs:int, cname:str, gr:int, grantor:int):void ",  "WLRgeneric;", 
 "Catalog operation grant"       ]
 [ "wlr",       "grant_function",       "pattern wlr.grant_function(sname:str, 
fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ",       
"WLRgeneric;",  "Catalog operation grant_function"      ]
 [ "wlr",       "grant_roles",  "pattern wlr.grant_roles(sname:str, auth:str, 
grantor:int, admin:int):void ",   "WLRgeneric;",  "Catalog operation 
grant_roles" ]
+[ "wlr",       "rename_column",        "pattern wlr.rename_column(sname:str, 
tname:str, cname:str, newnme:str):void ", "WLRgeneric;",  "Catalog operation 
rename_column"       ]
+[ "wlr",       "rename_schema",        "pattern wlr.rename_schema(sname:str, 
newnme:str):void ",       "WLRgeneric;",  "Catalog operation rename_schema"     
  ]
+[ "wlr",       "rename_table", "pattern wlr.rename_table(sname:str, tname:str, 
newnme:str):void ",     "WLRgeneric;",  "Catalog operation rename_table"        
]
 [ "wlr",       "rename_user",  "pattern wlr.rename_user(sname:str, newnme:str, 
action:int):void ",     "WLRgeneric;",  "Catalog operation rename_user" ]
 [ "wlr",       "replicate",    "pattern wlr.replicate():void ",        
"WLRreplicate;",        "Roll the snapshot forward to an up-to-date clone"      
]
 [ "wlr",       "replicate",    "pattern wlr.replicate(dbname:str):void ",      
"WLRreplicate;",        "Roll the snapshot forward to an up-to-date clone"      
]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -15314,6 +15314,9 @@ Ready.
 [ "sqlcatalog",        "grant",        "pattern sqlcatalog.grant(sname:str, 
tbl:str, grantee:str, privs:int, cname:str, gr:int, grantor:int):void ",   
"SQLgrant;",    "Catalog operation grant"       ]
 [ "sqlcatalog",        "grant_function",       "pattern 
sqlcatalog.grant_function(sname:str, fcnid:int, grantee:str, privs:int, 
grant:int, grantor:int):void ",        "SQLgrant_function;",   "Catalog 
operation grant_function"      ]
 [ "sqlcatalog",        "grant_roles",  "pattern 
sqlcatalog.grant_roles(sname:str, auth:str, grantor:int, admin:int):void ",    
"SQLgrant_roles;",      "Catalog operation grant_roles" ]
+[ "sqlcatalog",        "rename_column",        "pattern 
sqlcatalog.rename_column(sname:str, tname:str, cname:str, newnme:str):void ",  
"SQLrename_column;",    "Catalog operation rename_column"       ]
+[ "sqlcatalog",        "rename_schema",        "pattern 
sqlcatalog.rename_schema(sname:str, newnme:str):void ",        
"SQLrename_schema;",    "Catalog operation rename_schema"       ]
+[ "sqlcatalog",        "rename_table", "pattern 
sqlcatalog.rename_table(sname:str, tname:str, newnme:str):void ",      
"SQLrename_table;",     "Catalog operation rename_table"        ]
 [ "sqlcatalog",        "rename_user",  "pattern 
sqlcatalog.rename_user(sname:str, newnme:str, action:int):void ",      
"SQLrename_user;",      "Catalog operation rename_user" ]
 [ "sqlcatalog",        "revoke",       "pattern sqlcatalog.revoke(sname:str, 
tbl:str, grantee:str, privs:int, cname:str, grant:int, grantor:int):void ",     
  "SQLrevoke;",   "Catalog operation revoke"      ]
 [ "sqlcatalog",        "revoke_function",      "pattern 
sqlcatalog.revoke_function(sname:str, fcnid:int, grantee:str, privs:int, 
grant:int, grantor:int):void ",       "SQLrevoke_function;",  "Catalog 
operation revoke_function"     ]
@@ -15546,6 +15549,9 @@ Ready.
 [ "wlc",       "master",       "pattern wlc.master():void ",   "WLCmaster;",   
"Activate the workload-capture-replay process"  ]
 [ "wlc",       "master",       "pattern wlc.master(path:str):void ",   
"WLCmaster;",   "Activate the workload-capture-replay process. Use a different 
location for the logs."  ]
 [ "wlc",       "query",        "pattern wlc.query(q:str):void ",       
"WLCquery;",    "Keep the queries for replay."  ]
+[ "wlc",       "rename_column",        "pattern wlc.rename_column(sname:str, 
tname:str, cname:str, newnme:str):void ", "WLCgeneric;",  "Catalog operation 
rename_column"       ]
+[ "wlc",       "rename_schema",        "pattern wlc.rename_schema(sname:str, 
newnme:str):void ",       "WLCgeneric;",  "Catalog operation rename_schema"     
  ]
+[ "wlc",       "rename_table", "pattern wlc.rename_table(sname:str, tname:str, 
newnme:str):void ",     "WLCgeneric;",  "Catalog operation rename_table"        
]
 [ "wlc",       "rename_user",  "pattern wlc.rename_user(sname:str, newnme:str, 
action:int):void ",     "WLCgeneric;",  "Catalog operation rename_user" ]
 [ "wlc",       "revoke",       "pattern wlc.revoke(sname:str, tbl:str, 
grantee:str, privs:int, cname:str, grant:int, grantor:int):void ",      
"WLCgeneric;",  "Catalog operation revoke"      ]
 [ "wlc",       "revoke_function",      "pattern wlc.revoke_function(sname:str, 
fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ",      
"WLCgeneric;",  "Catalog operation revoke_function"     ]
@@ -15603,6 +15609,9 @@ Ready.
 [ "wlr",       "grant",        "pattern wlr.grant(sname:str, tbl:str, 
grantee:str, privs:int, cname:str, gr:int, grantor:int):void ",  "WLRgeneric;", 
 "Catalog operation grant"       ]
 [ "wlr",       "grant_function",       "pattern wlr.grant_function(sname:str, 
fcnid:int, grantee:str, privs:int, grant:int, grantor:int):void ",       
"WLRgeneric;",  "Catalog operation grant_function"      ]
 [ "wlr",       "grant_roles",  "pattern wlr.grant_roles(sname:str, auth:str, 
grantor:int, admin:int):void ",   "WLRgeneric;",  "Catalog operation 
grant_roles" ]
+[ "wlr",       "rename_column",        "pattern wlr.rename_column(sname:str, 
tname:str, cname:str, newnme:str):void ", "WLRgeneric;",  "Catalog operation 
rename_column"       ]
+[ "wlr",       "rename_schema",        "pattern wlr.rename_schema(sname:str, 
newnme:str):void ",       "WLRgeneric;",  "Catalog operation rename_schema"     
  ]
+[ "wlr",       "rename_table", "pattern wlr.rename_table(sname:str, tname:str, 
newnme:str):void ",     "WLRgeneric;",  "Catalog operation rename_table"        
]
 [ "wlr",       "rename_user",  "pattern wlr.rename_user(sname:str, newnme:str, 
action:int):void ",     "WLRgeneric;",  "Catalog operation rename_user" ]
 [ "wlr",       "replicate",    "pattern wlr.replicate():void ",        
"WLRreplicate;",        "Roll the snapshot forward to an up-to-date clone"      
]
 [ "wlr",       "replicate",    "pattern wlr.replicate(dbname:str):void ",      
"WLRreplicate;",        "Roll the snapshot forward to an up-to-date clone"      
]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -2556,6 +2556,9 @@ str remapRef;
 str remoteRef;
 void removeInstruction(MalBlkPtr mb, InstrPtr p);
 void removeInstructionBlock(MalBlkPtr mb, int pc, int cnt);
+str rename_columnRef;
+str rename_schemaRef;
+str rename_tableRef;
 str rename_userRef;
 str replaceRef;
 str replicatorRef;
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -41,29 +41,36 @@ typedef struct {
        const char *comments;
 } SQLhelp;
 
-#define NUMBER_MAJOR_COMMANDS 74 // The number of major commands to show in 
case of no query
+#define NUMBER_MAJOR_COMMANDS 75 // The number of major commands to show in 
case of no query
 
 SQLhelp sqlhelp[] = {
        // major commands
        {"ALTER TABLE",
         "",
-        "ALTER TABLE qname ADD [ COLUMN ] { column_def | table_constraint }\n"
-        "ALTER TABLE qname ALTER [ COLUMN ] ident SET DEFAULT value\n"
-        "ALTER TABLE qname ALTER [ COLUMN ] ident SET [NOT] NULL\n"
-        "ALTER TABLE qname ALTER [ COLUMN ] ident DROP DEFAULT\n"
-        "ALTER TABLE qname ALTER [ COLUMN ] ident SET STORAGE {string | 
NULL}\n"
-        "ALTER TABLE qname DROP [ COLUMN ] ident [ RESTRICT | CASCADE ]\n"
-        "ALTER TABLE qname DROP CONSTRAINT ident [ RESTRICT | CASCADE ]\n"
-        "ALTER TABLE qname SET { { READ | INSERT } ONLY | READ WRITE }",
+        "ALTER TABLE [ IF EXISTS ] qname ADD [ COLUMN ] { column_def | 
table_constraint }\n"
+        "ALTER TABLE [ IF EXISTS ] qname ALTER [ COLUMN ] ident SET DEFAULT 
value\n"
+        "ALTER TABLE [ IF EXISTS ] qname ALTER [ COLUMN ] ident SET [NOT] 
NULL\n"
+        "ALTER TABLE [ IF EXISTS ] qname ALTER [ COLUMN ] ident DROP DEFAULT\n"
+        "ALTER TABLE [ IF EXISTS ] qname ALTER [ COLUMN ] ident SET STORAGE 
{string | NULL}\n"
+        "ALTER TABLE [ IF EXISTS ] qname RENAME [ COLUMN ] ident TO ident\n"
+        "ALTER TABLE [ IF EXISTS ] qname DROP [ COLUMN ] ident [ RESTRICT | 
CASCADE ]\n"
+        "ALTER TABLE [ IF EXISTS ] qname DROP CONSTRAINT ident [ RESTRICT | 
CASCADE ]\n"
+        "ALTER TABLE [ IF EXISTS ] qname SET { { READ | INSERT } ONLY | READ 
WRITE }\n"
+        "ALTER TABLE [ IF EXISTS ] qname RENAME TO ident",
         "column_def,table_constraint",
         "See also https://www.monetdb.org/Documentation/SQLreference/Alter"},
        {"ALTER MERGE TABLE",
         "",
-        "ALTER TABLE qname ADD TABLE qname [ AS PARTITION opt_partition_spec 
]\n"
-        "ALTER TABLE qname DROP TABLE qname [ RESTRICT | CASCADE ]\n"
-        "ALTER TABLE qname SET TABLE qname AS PARTITION opt_partition_spec",
+        "ALTER TABLE [ IF EXISTS ] qname ADD TABLE qname [ AS PARTITION 
opt_partition_spec ]\n"
+        "ALTER TABLE [ IF EXISTS ] qname DROP TABLE qname [ RESTRICT | CASCADE 
]\n"
+        "ALTER TABLE [ IF EXISTS ] qname SET TABLE qname AS PARTITION 
opt_partition_spec",
         "opt_partition_spec",
         "See also 
https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/DataPartitioning"},
+       {"ALTER SCHEMA",
+        "",
+        "ALTER SCHEMA [ IF EXISTS ] ident RENAME TO ident",
+        NULL,
+        "See also https://www.monetdb.org/Documentation/SQLreference/Alter"},
        {"ALTER SEQUENCE",
         "",
         "ALTER SEQUENCE ident [ AS datatype] [ RESTART [WITH start]] 
[INCREMENT BY increment]\n"
diff --git a/monetdb5/modules/mal/wlc.mal b/monetdb5/modules/mal/wlc.mal
--- a/monetdb5/modules/mal/wlc.mal
+++ b/monetdb5/modules/mal/wlc.mal
@@ -230,6 +230,18 @@ pattern comment_on(objid:int, remark:str
 address WLCgeneric
 comment "Catalog operation comment_on";
 
+pattern rename_schema(sname:str, newnme:str)
+address WLCgeneric
+comment "Catalog operation rename_schema";
+
+pattern rename_table(sname:str, tname:str, newnme:str)
+address WLCgeneric
+comment "Catalog operation rename_table";
+
+pattern rename_column(sname:str, tname:str, cname:str, newnme:str)
+address WLCgeneric
+comment "Catalog operation rename_column";
+
 pattern transaction_release(chain:int,name:str):void
 address WLCgeneric
 comment "A transaction statement (type can be commit,release,rollback or 
start)";
diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -234,6 +234,9 @@ str register_supervisorRef;
 str releaseRef;
 str remapRef;
 str remoteRef;
+str rename_columnRef;
+str rename_schemaRef;
+str rename_tableRef;
 str rename_userRef;
 str replaceRef;
 str replicatorRef;
@@ -530,6 +533,9 @@ void optimizerInit(void)
        releaseRef = putName("release");
        remapRef = putName("remap");
        remoteRef = putName("remote");
+       rename_columnRef = putName("rename_column");
+       rename_schemaRef = putName("rename_schema");
+       rename_tableRef = putName("rename_table");
        rename_userRef = putName("rename_user");
        replaceRef = putName("replace");
        replicatorRef = putName("replicator");
diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h
--- a/monetdb5/optimizer/opt_prelude.h
+++ b/monetdb5/optimizer/opt_prelude.h
@@ -242,6 +242,9 @@ mal_export  str register_supervisorRef;
 mal_export  str releaseRef;
 mal_export  str remapRef;
 mal_export  str remoteRef;
+mal_export  str rename_columnRef;
+mal_export  str rename_schemaRef;
+mal_export  str rename_tableRef;
 mal_export  str rename_userRef;
 mal_export  str replaceRef;
 mal_export  str replicatorRef;
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -864,7 +864,7 @@ stmt_col( backend *be, sql_column *c, st
        stmt *sc = stmt_bat(be, c, RDONLY, del?del->partition:0);
 
        if (isTable(c->t) && c->t->access != TABLE_READONLY &&
-          (c->base.flag != TR_NEW || c->t->base.flag != TR_NEW /* alter */) &&
+          (!isNew(c) || !isNew(c->t) /* alter */) &&
           (c->t->persistence == SQL_PERSIST || c->t->persistence == 
SQL_DECLARED_TABLE) && !c->t->commit_action) {
                stmt *i = stmt_bat(be, c, RD_INS, 0);
                stmt *u = stmt_bat(be, c, RD_UPD_ID, del?del->partition:0);
@@ -882,7 +882,7 @@ stmt_idx( backend *be, sql_idx *i, stmt 
        stmt *sc = stmt_idxbat(be, i, RDONLY, del?del->partition:0);
 
        if (isTable(i->t) && i->t->access != TABLE_READONLY &&
-          (i->base.flag != TR_NEW || i->t->base.flag != TR_NEW /* alter */) &&
+          (!isNew(i) || !isNew(i->t) /* alter */) &&
           (i->t->persistence == SQL_PERSIST || i->t->persistence == 
SQL_DECLARED_TABLE) && !i->t->commit_action) {
                stmt *ic = stmt_idxbat(be, i, RD_INS, 0);
                stmt *u = stmt_idxbat(be, i, RD_UPD_ID, del?del->partition:0);
@@ -5252,7 +5252,7 @@ rel2bin_ddl(backend *be, sql_rel *rel, l
        } else if (rel->flag <= DDL_ALTER_TABLE) {
                s = rel2bin_catalog_table(be, rel, refs);
                sql->type = Q_SCHEMA;
-       } else if (rel->flag <= DDL_COMMENT_ON) {
+       } else if (rel->flag <= DDL_RENAME_COLUMN) {
                s = rel2bin_catalog2(be, rel, refs);
                sql->type = Q_SCHEMA;
        }
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -270,7 +270,7 @@ SQLshutdown_wrap(Client cntxt, MalBlkPtr
 }
 
 str
-create_table_or_view(mvc *sql, char *sname, char *tname, sql_table *t, int 
temp)
+create_table_or_view(mvc *sql, char* sname, char *tname, sql_table *t, int 
temp)
 {
        sql_allocator *osa;
        sql_schema *s = mvc_bind_schema(sql, sname);
@@ -278,13 +278,11 @@ create_table_or_view(mvc *sql, char *sna
        node *n;
        int check = 0;
 
-       (void)tname;
        if (STORE_READONLY)
                return sql_error(sql, 06, "25006!schema statements cannot be 
executed on a readonly database.");
 
        if (!s)
                return sql_message(SQLSTATE(3F000) "CREATE %s: schema '%s' 
doesn't exist", (t->query) ? "TABLE" : "VIEW", sname);
-
        if (mvc_bind_table(sql, s, t->base.name)) {
                char *cd = (temp == SQL_DECLARED_TABLE) ? "DECLARE" : "CREATE";
                return sql_message(SQLSTATE(42S01) "%s TABLE: name '%s' already 
in use", cd, t->base.name);
@@ -297,7 +295,8 @@ create_table_or_view(mvc *sql, char *sna
        osa = sql->sa;
        sql->sa = NULL;
 
-       nt = sql_trans_create_table(sql->session->tr, s, t->base.name, 
t->query, t->type, t->system, temp, t->commit_action, t->sz, t->properties);
+       nt = sql_trans_create_table(sql->session->tr, s, tname, t->query, 
t->type, t->system, temp, t->commit_action,
+                                                               t->sz, 
t->properties);
 
        /* first check default values */
        for (n = t->columns.set->h; n; n = n->next) {
@@ -408,7 +407,19 @@ create_table_or_view(mvc *sql, char *sna
                        mvc_copy_key(sql, nt, k);
                }
        }
-       /* also create dependencies */
+       if (t->members.set) {
+               for (n = t->members.set->h; n; n = n->next) {
+                       sql_part *pt = n->data;
+                       mvc_copy_part(sql, nt, pt);
+               }
+       }
+       if (t->triggers.set) {
+               for (n = t->triggers.set->h; n; n = n->next) {
+                       sql_trigger *tr = n->data;
+                       mvc_copy_trigger(sql, nt, tr);
+               }
+       }
+       /* also create dependencies when not renaming */
        if (nt->query && isView(nt)) {
                sql_rel *r = NULL;
 
@@ -1908,7 +1919,7 @@ SQLtid(Client cntxt, MalBlkPtr mb, MalSt
 
        nr = store_funcs.count_col(tr, c, 1);
 
-       if (isTable(t) && t->access == TABLE_WRITABLE && (t->base.flag != 
TR_NEW /* alter */ ) &&
+       if (isTable(t) && t->access == TABLE_WRITABLE && (!isNew(t) /* alter */ 
) &&
            t->persistence == SQL_PERSIST && !t->commit_action)
                inr = store_funcs.count_col(tr, c, 0);
        nr -= inr;
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -144,7 +144,7 @@ sql5_export str sql_dense_rank(bat *rid,
 sql5_export str SQLidentity(oid *rid, const void *i);
 sql5_export str BATSQLidentity(bat *rid, const bat *bid);
 sql5_export str PBATSQLidentity(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
-sql5_export str create_table_or_view(mvc *sql, char *sname, char *tname, 
sql_table *t, int temp);
+sql5_export str create_table_or_view(mvc *sql, char* sname, char *tname, 
sql_table *t, int temp);
 sql5_export str create_table_from_emit(Client cntxt, char *sname, char *tname, 
sql_emit_col *columns, size_t ncols);
 sql5_export str append_to_table_from_emit(Client cntxt, char *sname, char 
*tname, sql_emit_col *columns, size_t ncols);
 
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to