Changeset: 37a9c852a69f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=37a9c852a69f Modified Files: sql/common/sql_types.c sql/server/sql_parser.y sql/server/sql_semantic.c Branch: sfcgal Log Message:
merged with default diffs (46 lines): diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c --- a/sql/common/sql_types.c +++ b/sql/common/sql_types.c @@ -43,6 +43,12 @@ int digits2bits(int digits) return 8; else if (digits < 5) return 16; + else if (digits <= 5) + return 17; + else if (digits <= 6) + return 20; + else if (digits <= 7) + return 24; else if (digits <= 8) return 27; else if (digits < 10) diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -4337,6 +4337,9 @@ literal: /* find the most suitable data type for the given number */ if (!err) { int bits = digits2bits(digits); + + for (;(1<<(bits-1)) > value; bits--) ; + if (value > GDK_bte_min && value <= GDK_bte_max) sql_find_subtype(&t, "tinyint", bits, 0 ); else if (value > GDK_sht_min && value <= GDK_sht_max) diff --git a/sql/server/sql_semantic.c b/sql/server/sql_semantic.c --- a/sql/server/sql_semantic.c +++ b/sql/server/sql_semantic.c @@ -202,10 +202,11 @@ supertype(sql_subtype *super, sql_subtyp unsigned int scale = sql_max(i->scale, r->scale); *super = *r; - if (i->type->base.id >r->type->base.id || + if (i->type->base.id > r->type->base.id || (EC_VARCHAR(i->type->eclass) && !EC_VARCHAR(r->type->eclass))) { + *super = *i; + radix = i->type->radix; tpe = i->type->sqlname; - radix = i->type->radix; } /* * Incase of different radix we should change one. _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list