Changeset: 2ba8d95ea10e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2ba8d95ea10e Modified Files: sql/server/rel_sequence.c sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.sql sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.stable.out sql/test/Tests/seq-default.stable.out sql/test/seq-default.sql Branch: default Log Message:
Merge with Aug2018 branch. diffs (truncated from 487 to 300 lines): diff --git a/sql/server/rel_sequence.c b/sql/server/rel_sequence.c --- a/sql/server/rel_sequence.c +++ b/sql/server/rel_sequence.c @@ -17,10 +17,10 @@ char* sql_next_seq_name(mvc *m) { int id = store_next_oid(); - oid len = 5 + ((id+7)>>3); + size_t len = 5 + 10; /* max nr of digits of (4 bytes) int is 10 */ char *msg = sa_alloc(m->sa, len); - snprintf(msg, len, "seq_%d", store_next_oid()); + snprintf(msg, len, "seq_%d", id); return msg; } @@ -96,7 +96,7 @@ rel_create_seq( s = ss; (void) tpe; if (find_sql_sequence(s, name)) { - return sql_error(sql, 02, SQLSTATE(42000) "CREATE SEQUENCE: " "name '%s' already in use", name); + return sql_error(sql, 02, SQLSTATE(42000) "CREATE SEQUENCE: name '%s' already in use", name); } else if (!mvc_schema_privs(sql, s)) { return sql_error(sql, 02, SQLSTATE(42000) "CREATE SEQUENCE: insufficient privileges " "for '%s' in schema '%s'", stack_get_string(sql, "current_user"), s->base.name); @@ -109,7 +109,7 @@ rel_create_seq( if (max < 0) max = 0; if (cache <= 0) cache = 1; - seq = create_sql_sequence(sql->sa, s, name, start, min, max, inc, cache, cycle); + seq = create_sql_sequence(sql->sa, s, name, start, min, max, inc, cache, cycle); seq->bedropped = bedropped; res = rel_seq(sql->sa, DDL_CREATE_SEQ, s->base.name, seq, NULL, NULL); /* for multi statements we keep the sequence around */ @@ -148,43 +148,43 @@ list_create_seq( switch(s->token) { case SQL_TYPE: - if ((used&(1<<SEQ_TYPE))) + if ((used&(1<<SEQ_TYPE))) return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: AS type found should be used as most once"); used |= (1<<SEQ_TYPE); t = &s->data.lval->h->data.typeval; break; case SQL_START: - if ((used&(1<<SEQ_START))) + if ((used&(1<<SEQ_START))) return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: START value should be passed as most once"); used |= (1<<SEQ_START); start = s->data.l_val; break; case SQL_INC: - if ((used&(1<<SEQ_INC))) + if ((used&(1<<SEQ_INC))) return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: INCREMENT value should be passed as most once"); used |= (1<<SEQ_INC); inc = s->data.l_val; break; case SQL_MINVALUE: - if ((used&(1<<SEQ_MIN))) + if ((used&(1<<SEQ_MIN))) return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: MINVALUE or NO MINVALUE should be passed as most once"); used |= (1<<SEQ_MIN); min = s->data.l_val; break; case SQL_MAXVALUE: - if ((used&(1<<SEQ_MAX))) + if ((used&(1<<SEQ_MAX))) return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: MAXVALUE or NO MAXVALUE should be passed as most once"); used |= (1<<SEQ_MAX); max = s->data.l_val; break; case SQL_CYCLE: - if ((used&(1<<SEQ_CYCLE))) + if ((used&(1<<SEQ_CYCLE))) return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: CYCLE or NO CYCLE should be passed as most once"); used |= (1<<SEQ_CYCLE); cycle = s->data.i_val; break; case SQL_CACHE: - if ((used&(1<<SEQ_CACHE))) + if ((used&(1<<SEQ_CACHE))) return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: CACHE value should be passed as most once"); used |= (1<<SEQ_CACHE); cache = s->data.l_val; @@ -220,12 +220,12 @@ rel_alter_seq( assert(start_list->h->type == type_int); if (sname && !(s = mvc_bind_schema(sql, sname))) - return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: no such schema '%s'", sname); + return sql_error(sql, 02, SQLSTATE(3F000) "ALTER SEQUENCE: no such schema '%s'", sname); if (!s) s = ss; (void) tpe; if (!(seq = find_sql_sequence(s, name))) { - return sql_error(sql, 02, SQLSTATE(42000) "ALTER SEQUENCE: " "no such sequence '%s'", name); + return sql_error(sql, 02, SQLSTATE(42000) "ALTER SEQUENCE: no such sequence '%s'", name); } if (!mvc_schema_privs(sql, s)) { return sql_error(sql, 02, SQLSTATE(42000) "ALTER SEQUENCE: insufficient privileges " @@ -233,10 +233,10 @@ rel_alter_seq( } /* first alter the known values */ - seq = create_sql_sequence(sql->sa, s, name, seq->start, min, max, inc, cache, cycle); + seq = create_sql_sequence(sql->sa, s, name, seq->start, min, max, inc, cache, cycle); - /* restart may be a query, i.e. we create a statement - restart(ssname,seqname,value) */ + /* restart may be a query, i.e. we create a statement + restart(ssname,seqname,value) */ if (start_type == 0) { val = exp_atom_lng(sql->sa, seq->start); @@ -250,7 +250,7 @@ rel_alter_seq( if (!val || !(val = rel_check_type(sql, lng_t, val, type_equal))) return NULL; } else if (start_type == 2) { - assert (start_list->h->next->type == type_lng); + assert (start_list->h->next->type == type_lng); val = exp_atom_lng(sql->sa, start_list->h->next->data.l_val); } return rel_seq(sql->sa, DDL_ALTER_SEQ, s->base.name, seq, r, val); @@ -275,44 +275,44 @@ list_alter_seq( switch(s->token) { case SQL_TYPE: - if ((used&(1<<SEQ_TYPE))) - return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: AS type found should be used as most once"); + if ((used&(1<<SEQ_TYPE))) + return sql_error(sql, 02, SQLSTATE(3F000) "ALTER SEQUENCE: AS type found should be used as most once"); used |= (1<<SEQ_TYPE); t = &s->data.lval->h->data.typeval; break; case SQL_START: - if ((used&(1<<SEQ_START))) - return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: START value should be passed as most once"); + if ((used&(1<<SEQ_START))) + return sql_error(sql, 02, SQLSTATE(3F000) "ALTER SEQUENCE: START value should be passed as most once"); used |= (1<<SEQ_START); start = s->data.lval; break; case SQL_INC: - if ((used&(1<<SEQ_INC))) - return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: INCREMENT value should be passed as most once"); + if ((used&(1<<SEQ_INC))) + return sql_error(sql, 02, SQLSTATE(3F000) "ALTER SEQUENCE: INCREMENT value should be passed as most once"); used |= (1<<SEQ_INC); inc = s->data.l_val; break; case SQL_MINVALUE: - if ((used&(1<<SEQ_MIN))) - return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: MINVALUE or NO MINVALUE should be passed as most once"); + if ((used&(1<<SEQ_MIN))) + return sql_error(sql, 02, SQLSTATE(3F000) "ALTER SEQUENCE: MINVALUE or NO MINVALUE should be passed as most once"); used |= (1<<SEQ_MIN); min = s->data.l_val; break; case SQL_MAXVALUE: - if ((used&(1<<SEQ_MAX))) - return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: MAXVALUE or NO MAXVALUE should be passed as most once"); + if ((used&(1<<SEQ_MAX))) + return sql_error(sql, 02, SQLSTATE(3F000) "ALTER SEQUENCE: MAXVALUE or NO MAXVALUE should be passed as most once"); used |= (1<<SEQ_MAX); max = s->data.l_val; break; case SQL_CYCLE: - if ((used&(1<<SEQ_CYCLE))) - return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: CYCLE or NO CYCLE should be passed as most once"); + if ((used&(1<<SEQ_CYCLE))) + return sql_error(sql, 02, SQLSTATE(3F000) "ALTER SEQUENCE: CYCLE or NO CYCLE should be passed as most once"); used |= (1<<SEQ_CYCLE); cycle = s->data.i_val; break; case SQL_CACHE: - if ((used&(1<<SEQ_CACHE))) - return sql_error(sql, 02, SQLSTATE(3F000) "CREATE SEQUENCE: CACHE value should be passed as most once"); + if ((used&(1<<SEQ_CACHE))) + return sql_error(sql, 02, SQLSTATE(3F000) "ALTER SEQUENCE: CACHE value should be passed as most once"); used |= (1<<SEQ_CACHE); cache = s->data.l_val; break; @@ -335,20 +335,20 @@ rel_sequences(mvc *sql, symbol *s) res = list_create_seq( /* mvc* sql */ sql, -/* sql_schema* s */ cur_schema(sql), -/* dlist* qname */ l->h->data.lval, -/* dlist* options */ l->h->next->data.lval, -/* int bedropped */ l->h->next->next->data.i_val); +/* sql_schema* s */ cur_schema(sql), +/* dlist* qname */ l->h->data.lval, +/* dlist* options */ l->h->next->data.lval, +/* int bedropped */ l->h->next->next->data.i_val); } break; case SQL_ALTER_SEQ: { dlist* l = s->data.lval; - + res = list_alter_seq( /* mvc* sql */ sql, -/* sql_schema* s */ cur_schema(sql), -/* dlist* qname */ l->h->data.lval, +/* sql_schema* s */ cur_schema(sql), +/* dlist* qname */ l->h->data.lval, /* dlist* options */ l->h->next->data.lval); } break; @@ -369,6 +369,6 @@ rel_sequences(mvc *sql, symbol *s) default: return sql_error(sql, 01, SQLSTATE(42000) "sql_stmt Symbol(%p)->token = %s", s, token2string(s->token)); } - sql->type = Q_SCHEMA; + sql->type = Q_SCHEMA; return res; } diff --git a/sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.sql b/sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.sql --- a/sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.sql +++ b/sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.sql @@ -1,7 +1,7 @@ -CREATE SEQUENCE sys.seq_5700 AS INTEGER; +CREATE SEQUENCE sys.myseq_5700 AS INTEGER; CREATE TABLE kvk ( - id INTEGER NOT NULL DEFAULT next value for seq_5700, + id INTEGER NOT NULL DEFAULT next value for myseq_5700, kvk BIGINT, bedrijfsnaam VARCHAR(256), adres VARCHAR(256), @@ -49,4 +49,4 @@ select * from kvk; drop table kvk_extra_nieuw; drop table kvk; -drop SEQUENCE sys.seq_5700; +drop SEQUENCE sys.myseq_5700; diff --git a/sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.stable.out b/sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.stable.out --- a/sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.stable.out +++ b/sql/test/BugTracker-2012/Tests/update_crash.Bug-2655.stable.out @@ -7,17 +7,15 @@ stdout of test 'update_crash.Bug-2655` i # MonetDB 5 server v11.13.6 # This is an unreleased version -# Serving database 'mTests_test_BugTracker-2012', using 8 threads -# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked -# Found 15.629 GiB available main-memory. -# Copyright (c) 1993-July 2008 CWI. -# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved -# Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://lyon.ins.cwi.nl:31477/ -# MonetDB/JAQL module loaded -# MonetDB/SQL module loaded - -Ready. +# Serving database 'mTests_sql_test_BugTracker-2012', using 4 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers +# Found 31.306 GiB available main-memory. +# Copyright (c) 1993 - July 2008 CWI. +# Copyright (c) August 2008 - 2018 MonetDB B.V., all rights reserved +# Visit https://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://catskill.da.cwi.nl:31682/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-31807/.s.monetdb.31682 +# MonetDB/GIS module loaded # SQL catalog created, loading sql scripts once # loading sql script: 09_like.sql # loading sql script: 10_math.sql @@ -39,15 +37,17 @@ Ready. # loading sql script: 39_analytics.sql # loading sql script: 80_udf.sql # loading sql script: 99_system.sql +# MonetDB/SQL module loaded + +Ready. # 16:26:37 > # 16:26:37 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=lyon" "--port=31477" # 16:26:37 > -#CREATE SEQUENCE sys.seq_5700 AS INTEGER; +#CREATE SEQUENCE sys.myseq_5700 AS INTEGER; #CREATE TABLE kvk ( -# id INTEGER NOT NULL DEFAULT next value for -#seq_5700, +# id INTEGER NOT NULL DEFAULT next value for myseq_5700, # kvk BIGINT, # bedrijfsnaam VARCHAR(256), # adres VARCHAR(256), @@ -114,9 +114,9 @@ Ready. % 1, 1, 6, 6, 6, 6, 6, 2, 2, 1, 1, 4 # length [ 1, 1, "table1", "table1", "table1", "table1", "table1", 23, 24, 1, 1, "test" ] [ 2, 1, "table1", "table1", "table1", "table1", "table1", 23, 24, 1, 1, "test" ] -#drop SEQUENCE sys.seq_5700; #drop table kvk_extra_nieuw; #drop table kvk; +#drop SEQUENCE sys.myseq_5700; # 16:26:37 > # 16:26:37 > "Done." diff --git a/sql/test/Tests/seq-default.stable.out b/sql/test/Tests/seq-default.stable.out _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list