Hai Stefan,

Thanks for noticing this! I'll check and correct stuff a.s.a.p..  Mmm, I 
confess that I don't run a complete Mtest before every check-in, but in this 
case, I should have done that since it changes the catalog :P

Jennie


On Mar 07, 2012, at 17:52, Stefan Manegold wrote:

> Jennie,
> 
> this checkin appear to trigger different output for the following tests:
> 
> sql/test/BugDay_2005-11-09_2.8/Tests/ORDER_BY_evaluation_error.SF-1023658
> sql/test/BugTracker-2009/Tests/join_topn.SF-2654133
> sql/test/BugTracker-2010/Tests/offset_limited_32bit.SF-2950579
> sql/test/BugTracker/Tests/like_exp.SF-1613949
> sql/test/bugs/Tests/select_orderby_alias-bug-sf-1024615
> 
> Could you please check, whether the new output is the desired and correct
> one, and if so, approve it, or otherwise check whether you can fix the code?
> 
> No hurry. I just happend to notice this and hence do report it ;-)
> 
> Stefan
> 
> On Tue, Mar 06, 2012 at 05:42:18PM +0100, Jennie Zhang wrote:
>> Changeset: a27b334ae151 for MonetDB
>> URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a27b334ae151
>> Modified Files:
>>      sql/backends/monet5/sql.mx
>>      sql/server/rel_schema.c
>>      sql/server/sql_mvc.c
>>      sql/storage/sql_storage.h
>>      sql/storage/store.c
>>      sql/test/sciql/Tests/01_create_01.sql
>>      sql/test/sciql/Tests/01_create_01.stable.out
>> Branch: sciql
>> Log Message:
>> 
>> Be more correct with the "fixed" property of the SQL catalog
>> 
>> renamed "fixed" into "fixed_array" in the SQL catalog and set it value to 
>> FALSE
>> (i.s.o. TRUE) for all tables.
>> 
>> added tests to check if "fixed_array" and "nr_dimensions" in the SQL catalog
>> are computed correctly.  apporved new stable.out
>> 
>> 
>> diffs (251 lines):
>> 
>> diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
>> --- a/sql/backends/monet5/sql.mx
>> +++ b/sql/backends/monet5/sql.mx
>> @@ -1881,7 +1881,7 @@ create_table_or_view( mvc *sql, char *sn
>>              }
>>      }
>> 
>> -    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->fixed, 
>> &t->ndims);
>> +    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->fixed, 
>> t->ndims);
>> 
>>      for (n = t->columns.set->h; n; n = n->next) {
>>              sql_column *c = n->data;
>> diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
>> --- a/sql/server/rel_schema.c
>> +++ b/sql/server/rel_schema.c
>> @@ -729,7 +729,9 @@ create_column(mvc *sql, symbol *s, sql_s
>>                              cs->dim->step = GDKstrdup("");
>>                              cs->dim->stop = GDKstrdup("");
>>                      }
>> -                    t->fixed = isFixedDim(cs->dim);
>> +                    if (!(isFixedDim(cs->dim)))
>> +                            t->fixed = 0;
>> +
>>                      /* TODO: the case "ARRAY dim_range_list" is not dealt 
>> with */
>>              }
>>              if (column_options(sql, opt_list, ss, t, cs) == SQL_ERR)
>> @@ -992,6 +994,8 @@ rel_create_table(mvc *sql, sql_schema *s
>>              int i = 0, j = 0, cnt = 0, *N = NULL, *M = NULL;
>>              lng cntall = 1;
>> 
>> +            if (isArray(t))
>> +                    t->fixed = 1;
>>              for (n = columns->h; n; n = n->next) {
>>                      symbol *sym = n->data.sym;
>>                      int res = table_element(sql, sym, s, t, 0);
>> diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
>> --- a/sql/server/sql_mvc.c
>> +++ b/sql/server/sql_mvc.c
>> @@ -87,7 +87,7 @@ mvc_init(char *dbname, int debug, store_
>>              mvc_create_column_(m, t, "system", "boolean", 1);
>>              mvc_create_column_(m, t, "commit_action", "smallint", 16);
>>              mvc_create_column_(m, t, "readonly", "boolean", 1);
>> -            mvc_create_column_(m, t, "fixed", "boolean", 1);
>> +            mvc_create_column_(m, t, "fixed_array", "boolean", 1);
>>              mvc_create_column_(m, t, "nr_dimensions", "int", 32);
>>              mvc_create_column_(m, t, "temporary", "smallint", 16);
>> 
>> @@ -124,7 +124,7 @@ mvc_init(char *dbname, int debug, store_
>>              mvc_create_column_(m, t, "system", "boolean", 1);
>>              mvc_create_column_(m, t, "commit_action", "smallint", 16);
>>              mvc_create_column_(m, t, "readonly", "boolean", 1);
>> -            mvc_create_column_(m, t, "fixed", "boolean", 1);
>> +            mvc_create_column_(m, t, "fixed_array", "boolean", 1);
>>              mvc_create_column_(m, t, "nr_dimensions", "int", 32);
>>              mvc_create_column_(m, t, "temporary", "smallint", 16);
>>              if (catalog_version) {
>> @@ -1029,13 +1029,13 @@ mvc_create_table(mvc *m, sql_schema *s, 
>>                              tt == tt_table? "TABLE":(tt == tt_array? 
>> "ARRAY":"OTHER_TT"),
>>                              s->base.name, name, tt, system, persistence, 
>> commit_action);
>> 
>> -    /* FIXME: are the NULLs correct values for 'fixed' and 'ndims'? */
>>      if (persistence == SQL_DECLARED_TABLE && (!s || strcmp(s->base.name, 
>> dt_schema))) {
>>              /* declared tables should not end up in the catalog */
>> -            t = create_sql_table(m->sa, name, tt, system, persistence, 
>> commit_action, NULL, NULL);
>> +            /* actual values of 'fixed' and 'ndims' are computed later */
>> +            t = create_sql_table(m->sa, name, tt, system, persistence, 
>> commit_action, 0, 0);
>>              t->s = s;
>>      } else {
>> -            t = sql_trans_create_table(m->session->tr, s, name, NULL, tt, 
>> system, persistence, commit_action, sz, NULL, NULL);
>> +            t = sql_trans_create_table(m->session->tr, s, name, NULL, tt, 
>> system, persistence, commit_action, sz, 0, 0);
>>      }
>>      return t;
>> }
>> @@ -1049,11 +1049,11 @@ mvc_create_view(mvc *m, sql_schema *s, c
>>              fprintf(stderr, "#mvc_create_view %s %s %s\n", s->base.name, 
>> name, sql);
>> 
>>      if (persistence == SQL_DECLARED_TABLE) {
>> -            t = create_sql_table(m->sa, name, tt_view, system, persistence, 
>> 0, NULL, NULL);
>> +            t = create_sql_table(m->sa, name, tt_view, system, persistence, 
>> 0, 0, 0);
>>              t->s = s;
>>              t->query = sa_strdup(m->sa, sql);
>>      } else {
>> -            t = sql_trans_create_table(m->session->tr, s, name, sql, 
>> tt_view, system, SQL_PERSIST, 0, 0, NULL, NULL);
>> +            t = sql_trans_create_table(m->session->tr, s, name, sql, 
>> tt_view, system, SQL_PERSIST, 0, 0, 0, 0);
>>      }
>>      return t;
>> }
>> @@ -1067,11 +1067,11 @@ mvc_create_remote(mvc *m, sql_schema *s,
>>              fprintf(stderr, "#mvc_create_remote %s %s %s\n", s->base.name, 
>> name, loc);
>> 
>>      if (persistence == SQL_DECLARED_TABLE) {
>> -            t = create_sql_table(m->sa, name, tt_remote, 0, persistence, 0, 
>> NULL, NULL);
>> +            t = create_sql_table(m->sa, name, tt_remote, 0, persistence, 0, 
>> 0, 0);
>>              t->s = s;
>>              t->query = sa_strdup(m->sa, loc);
>>      } else {
>> -            t = sql_trans_create_table(m->session->tr, s, name, loc, 
>> tt_remote, 0, SQL_REMOTE, 0, 0, NULL, NULL);
>> +            t = sql_trans_create_table(m->session->tr, s, name, loc, 
>> tt_remote, 0, SQL_REMOTE, 0, 0, 0, 0);
>>      }
>>      return t;
>> }
>> @@ -1084,7 +1084,7 @@ mvc_create_generated(mvc *m, sql_schema 
>>      if (mvc_debug)
>>              fprintf(stderr, "#mvc_create_generated %s %s %s\n", 
>> s->base.name, name, sql);
>> 
>> -    t = sql_trans_create_table(m->session->tr, s, name, sql, tt_generated, 
>> system, SQL_PERSIST, 0, 0, NULL, NULL);
>> +    t = sql_trans_create_table(m->session->tr, s, name, sql, tt_generated, 
>> system, SQL_PERSIST, 0, 0, 0, 0);
>>      return t;
>> }
>> 
>> diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h
>> --- a/sql/storage/sql_storage.h
>> +++ b/sql/storage/sql_storage.h
>> @@ -314,7 +314,7 @@ extern void reset_functions(sql_trans *t
>> extern sql_schema *sql_trans_create_schema(sql_trans *tr, char *name, int 
>> auth_id, int owner);
>> extern void sql_trans_drop_schema(sql_trans *tr, int id, int drop_action);
>> 
>> -extern sql_table *sql_trans_create_table(sql_trans *tr, sql_schema *s, char 
>> *name, char *sql, int tt, bit system, int persistence, int commit_action, 
>> int sz, bit *fixed, int *ndims);
>> +extern sql_table *sql_trans_create_table(sql_trans *tr, sql_schema *s, char 
>> *name, char *sql, int tt, bit system, int persistence, int commit_action, 
>> int sz, bit fixed, int ndims);
>> extern sql_table *sql_trans_add_table(sql_trans *tr, sql_table *mt, 
>> sql_table *pt);
>> extern sql_table *sql_trans_del_table(sql_trans *tr, sql_table *mt, 
>> sql_table *pt, int drop_action);
>> 
>> @@ -368,7 +368,7 @@ extern int sql_trans_connect_catalog(sql
>> extern int sql_trans_disconnect_catalog(sql_trans *tr, char *db_alias);
>> extern int sql_trans_disconnect_catalog_ALL(sql_trans *tr);
>> 
>> -extern sql_table *create_sql_table(sql_allocator *sa, char *name, sht type, 
>> bit system, int persistence, int commit_action, bit *fixed, int *ndims);
>> +extern sql_table *create_sql_table(sql_allocator *sa, char *name, sht type, 
>> bit system, int persistence, int commit_action, bit fixed, int ndims);
>> extern sql_column *create_sql_column(sql_allocator *sa, sql_table *t, char 
>> *name, sql_subtype *tpe);
>> extern sql_ukey *create_sql_ukey(sql_allocator *sa, sql_table *t, char *nme, 
>> key_type kt);
>> extern sql_fkey *create_sql_fkey(sql_allocator *sa, sql_table *t, char *nme, 
>> key_type kt, sql_key *rkey, int on_delete, int on_update );
>> diff --git a/sql/storage/store.c b/sql/storage/store.c
>> --- a/sql/storage/store.c
>> +++ b/sql/storage/store.c
>> @@ -578,7 +578,7 @@ load_table(sql_trans *tr, sql_schema *s,
>>      t->cleared = 0;
>>      v = table_funcs.column_find_value(tr, find_sql_column(tables, 
>> "readonly"),rid);
>>      t->readonly = *(bit *)v;        _DELETE(v);
>> -    v = table_funcs.column_find_value(tr, find_sql_column(tables, 
>> "fixed"),rid);
>> +    v = table_funcs.column_find_value(tr, find_sql_column(tables, 
>> "fixed_array"),rid);
>>      t->fixed = *(bit *)v;   _DELETE(v);
>>      v = table_funcs.column_find_value(tr, find_sql_column(tables, 
>> "nr_dimensions"),rid);
>>      t->ndims = *(int *)v;   _DELETE(v);
>> @@ -1127,7 +1127,7 @@ bootstrap_create_column(sql_trans *tr, s
>> }
>> 
>> sql_table *
>> -create_sql_table(sql_allocator *sa, char *name, sht type, bit system, int 
>> persistence, int commit_action, bit *fixed, int *ndims)
>> +create_sql_table(sql_allocator *sa, char *name, sht type, bit system, int 
>> persistence, int commit_action, bit fixed, int ndims)
>> {
>>      sql_table *t = SA_ZNEW(sa, sql_table);
>> 
>> @@ -1149,9 +1149,9 @@ create_sql_table(sql_allocator *sa, char
>>      t->pkey = NULL;
>>      t->sz = COLSIZE;
>>      t->cleared = 0;
>> -    /* 'fixed' and 'ndims' are ONLY used for arrays.  Pass NULLs to get 
>> their defaults. */
>> -    t->fixed = fixed ? *fixed : 1; /* should be set to 0 if an unbounded 
>> dimension is found. */
>> -    t->ndims = ndims ? *ndims : 0;
>> +    /* 'fixed' and 'ndims' are ONLY used for arrays. For tables, their 
>> values arre always 0. */
>> +    t->fixed = isArray(t) ? fixed : 0; /* should be set to 1 for fixed 
>> arrays. */
>> +    t->ndims = isArray(t) ? ndims : 0;
>>      t->s = NULL;
>>      return t;
>> }
>> @@ -1188,7 +1188,7 @@ sql_table *
>> dup_sql_table(sql_allocator *sa, sql_table *t)
>> {
>>      node *n;
>> -    sql_table *nt = create_sql_table(sa, t->base.name, t->type, t->system, 
>> SQL_DECLARED_TABLE, t->commit_action, &t->fixed, &t->ndims);
>> +    sql_table *nt = create_sql_table(sa, t->base.name, t->type, t->system, 
>> SQL_DECLARED_TABLE, t->commit_action, t->fixed, t->ndims);
>> 
>>      for (n = t->columns.set->h; n; n = n->next) 
>>              dup_sql_column(sa, nt, n->data);
>> @@ -1223,7 +1223,7 @@ bootstrap_create_table(sql_trans *tr, sq
>>      int istmp = isTempSchema(s);
>>      int persistence = istmp?SQL_GLOBAL_TEMP:SQL_PERSIST;
>>      sht commit_action = istmp?CA_PRESERVE:CA_COMMIT;
>> -    sql_table *t = create_sql_table(tr->sa, name, tt_table, 1, persistence, 
>> commit_action, NULL, NULL /* we never have arrays here */);
>> +    sql_table *t = create_sql_table(tr->sa, name, tt_table, 1, persistence, 
>> commit_action, 0, 0 /* we never have arrays here */);
>> 
>>      if (bs_debug)
>>              fprintf(stderr, "#bootstrap_create_table %s\n", name );
>> @@ -1411,7 +1411,7 @@ store_init(int debug, store_type store, 
>>              bootstrap_create_column(tr, t, "system", "boolean", 1);
>>              bootstrap_create_column(tr, t, "commit_action", "smallint", 16);
>>              bootstrap_create_column(tr, t, "readonly", "boolean", 1);
>> -            bootstrap_create_column(tr, t, "fixed", "boolean", 1);
>> +            bootstrap_create_column(tr, t, "fixed_array", "boolean", 1);
>>              bootstrap_create_column(tr, t, "nr_dimensions", "int", 32);
>> 
>>              t = bootstrap_create_table(tr, s, "_columns");
>> @@ -3863,7 +3863,7 @@ sql_trans_del_table(sql_trans *tr, sql_t
>> }
>> 
>> sql_table *
>> -sql_trans_create_table(sql_trans *tr, sql_schema *s, char *name, char *sql, 
>> int tt, bit system, int persistence, int commit_action, int sz, bit *fixed, 
>> int *ndims)
>> +sql_trans_create_table(sql_trans *tr, sql_schema *s, char *name, char *sql, 
>> int tt, bit system, int persistence, int commit_action, int sz, bit fixed, 
>> int ndims)
>> {
>>      sql_table *t = create_sql_table(tr->sa, name, tt, system, persistence, 
>> commit_action, fixed, ndims);
>>      sql_schema *syss = find_sql_schema(tr, isGlobal(t)?"sys":"tmp");
>> diff --git a/sql/test/sciql/Tests/01_create_01.sql 
>> b/sql/test/sciql/Tests/01_create_01.sql
>> --- a/sql/test/sciql/Tests/01_create_01.sql
>> +++ b/sql/test/sciql/Tests/01_create_01.sql
>> @@ -1,5 +1,16 @@
>> -- use the [size] shortcut for integer type dimensions
>> CREATE ARRAY ary(x TINYINT DIMENSION[4], y BIGINT DIMENSION[-5], v FLOAT 
>> DEFAULT 3.7);
>> SELECT * FROM ary;
>> +
>> +CREATE ARRAY ary1(x TINYINT DIMENSION, y BIGINT DIMENSION, v FLOAT DEFAULT 
>> 3.7);
>> +SELECT * FROM ary1;
>> +
>> +CREATE ARRAY ary2(x TINYINT DIMENSION[4], y BIGINT DIMENSION, z BIGINT 
>> DIMENSION[-5], v FLOAT DEFAULT 3.7);
>> +SELECT * FROM ary2;
>> +
>> +SELECT * FROM _tables WHERE type = 7 OR fixed_array = TRUE;
>> +
>> DROP ARRAY ary;
>> +DROP ARRAY ary1;
>> +DROP ARRAY ary2;
>> 
>> diff --git a/sql/test/sciql/Tests/01_create_01.stable.out 
>> b/sql/test/sciql/Tests/01_create_01.stable.out
>> --- a/sql/test/sciql/Tests/01_create_01.stable.out
>> +++ b/sql/test/sciql/Tests/01_create_01.stable.out
>> @@ -49,6 +49,26 @@ Ready.
>> [ 3, -2,     3.7     ]
>> [ 3, -3,     3.7     ]
>> [ 3, -4,     3.7     ]
>> +#CREATE ARRAY ary1(x TINYINT DIMENSION, y BIGINT DIMENSION, v FLOAT DEFAULT 
>> 3.7);
>> +#SELECT * FROM ary1;
>> +% sys.ary1, sys.ary1,       sys.ary1 # table_name
>> +% x,        y,      v # name
>> +% tinyint,  bigint, double # type
>> +% 1,        1,      24 # length
>> +#CREATE ARRAY ary2(x TINYINT DIMENSION[4], y BIGINT DIMENSION, z BIGINT 
>> DIMENSION[-5], v FLOAT DEFAULT 3.7);
>> +#SELECT * FROM ary2;
>> +% sys.ary2, sys.ary2,       sys.ary2,       sys.ary2 # table_name
>> +% x,        y,      z,      v # name
>> +% tinyint,  bigint, bigint, double # type
>> +% 1,        1,      1,      24 # length
>> +#SELECT * FROM _tables WHERE type = 7 OR fixed_array = TRUE;
>> +% sys._tables,      sys._tables,    sys._tables,    sys._tables,    
>> sys._tables,    sys._tables,    sys._tables,    sys._tables,    sys._tables, 
>>    sys._tables # table_name
>> +% id,       name,   schema_id,      query,  type,   system, commit_action,  
>> readonly,       fixed_array,    nr_dimensions # name
>> +% int,      varchar,        int,    varchar,        smallint,       
>> boolean,        smallint,       boolean,        boolean,        int # type
>> +% 4,        4,      4,      0,      1,      5,      1,      5,      5,      
>> 1 # length
>> +[ 6461,     "ary",  2000,   NULL,   7,      false,  0,      false,  true,   
>> 2       ]
>> +[ 6466,     "ary1", 2000,   NULL,   7,      false,  0,      false,  false,  
>> 2       ]
>> +[ 6472,     "ary2", 2000,   NULL,   7,      false,  0,      false,  false,  
>> 3       ]
>> #DROP ARRAY ary;
>> 
>> # 13:50:46 >  
>> _______________________________________________
>> Checkin-list mailing list
>> checkin-l...@monetdb.org
>> http://mail.monetdb.org/mailman/listinfo/checkin-list
> 
> -- 
> | Stefan.Manegold @ CWI.nl | DB Architectures (INS1) |
> | http://CWI.nl/~manegold/ | Science Park 123 (L321) |
> | Tel.: +31 (0)20 592-4212 | 1098 XG Amsterdam  (NL) |


------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Monetdb-developers mailing list
Monetdb-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/monetdb-developers

Reply via email to