Changeset: 213c45709fb9 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=213c45709fb9 Added Files: sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.sql sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.err sql/test/BugTracker-2015/Tests/date_comparison_incorrect_results.Bug-3834.stable.out sql/test/BugTracker-2015/Tests/null.Bug-3833.sql sql/test/BugTracker-2015/Tests/null.Bug-3833.stable.err sql/test/BugTracker-2015/Tests/null.Bug-3833.stable.out Modified Files: .hgtags MonetDB.spec NT/installer32/MonetDB-ODBC-Installer.vdproj NT/installer32/MonetDB5-Geom-Module.vdproj NT/installer32/MonetDB5-SQL-Installer.vdproj NT/installer64/MonetDB-ODBC-Installer.vdproj NT/installer64/MonetDB5-Geom-Module.vdproj NT/installer64/MonetDB5-SQL-Installer.vdproj NT/monetdb_config.h.in NT/rules.msc clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out clients/mapiclient/dump.c clients/mapiclient/mclient.c clients/mapilib/mapi.rc clients/odbc/driver/driver.rc clients/odbc/winsetup/setup.rc clients/python2/setup.py clients/python3/setup.py common/stream/stream.c configure.ag debian/changelog gdk/gdk_select.c gdk/libbat.rc libversions monetdb5/ChangeLog monetdb5/mal/mal_function.c monetdb5/modules/atoms/str.c monetdb5/modules/atoms/str.h monetdb5/modules/atoms/str.mal monetdb5/modules/kernel/batcolor.h monetdb5/modules/kernel/batstr.c monetdb5/optimizer/Tests/dataflow.mal monetdb5/optimizer/Tests/manifold2.stable.out monetdb5/optimizer/opt_dataflow.c monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_support.c monetdb5/tools/libmonetdb5.rc sql/backends/monet5/sql.c sql/backends/monet5/sql_rank.mal sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_user.c sql/backends/monet5/sql_user.h sql/server/rel_schema.c sql/server/sql_parser.y sql/server/sql_qc.c sql/server/sql_scan.c sql/test/BugTracker-2014/Tests/nil_2dec_lng.Bug-3592.sql sql/test/BugTracker-2015/Tests/All sql/test/BugTracker-2015/Tests/schema_view2.Bug-3766.sql sql/test/bugs/Tests/not.stable.out sql/test/leaks/Tests/check0.stable.out sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check5.stable.out sql/test/leaks/Tests/select1.stable.out sql/test/leaks/Tests/select2.stable.out sql/test/leaks/Tests/temp2.stable.out sql/test/leaks/Tests/temp3.stable.out sql/test/pg_regress/Tests/strings.stable.err sql/test/pg_regress/Tests/strings.stable.err.int128 vertoo.data Branch: embedded Log Message:
merge with default diffs (truncated from 2509 to 300 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -607,3 +607,6 @@ 30be7bd4aec0b5daf3d2f3a26a1043c04b88bb6d c7c0a76e663e34bcddae683b385c8e5a919ffd84 Jul2015_release d1bce2fabbc36a3a3b996b09e55e764a626026a8 Jul2015_7 d1bce2fabbc36a3a3b996b09e55e764a626026a8 Jul2015_SP1_release +d1dd6e5b7a5acfe14a33070e08c776341996deb2 Jul2015_9 +d1bce2fabbc36a3a3b996b09e55e764a626026a8 Jul2015_SP1_release +d1dd6e5b7a5acfe14a33070e08c776341996deb2 Jul2015_SP1_release diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -995,6 +995,18 @@ rm -f %{buildroot}%{_bindir}/Maddlog %postun -p /sbin/ldconfig %changelog +* Mon Oct 26 2015 Sjoerd Mullender <sjo...@acm.org> - 11.21.9-20151026 +- Rebuilt. +- BZ#3816: Server crashes when trying to convert timestamp to str with + incorrect format +- BZ#3823: JDBC Connection to a schema - setSchema() error +- BZ#3827: Certains comparisons between UUID produce a MAL error +- BZ#3829: Certains simple WHERE clause cause MonetDB to segfault + without explanation +- BZ#3830: Coalesce typing inconsistencies +- BZ#3833: NULL literals refused at many places +- BZ#3834: Date comparison returns incorrect results + * Tue Oct 20 2015 Sjoerd Mullender <sjo...@acm.org> - 11.21.7-20151020 - Rebuilt. - BZ#3789: Query on large string table fails on HEAPextend 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 @@ -2627,15 +2627,15 @@ command batsql.alpha(dec:bat[:oid,:dbl], address SQLbat_alpha_cst; comment BAT implementation of astronomy alpha function -pattern batsql.dense_rank{orderdependend}(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] +pattern batsql.dense_rank(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] address SQLdense_rank; comment return the densely ranked groups -pattern batsql.diff{orderdependend}(p:bat[:oid,:bit],b:bat[:oid,:any_1]):bat[:oid,:bit] +pattern batsql.diff(p:bat[:oid,:bit],b:bat[:oid,:any_1]):bat[:oid,:bit] address SQLdiff; comment return true if cur != prev row -pattern batsql.diff{orderdependend}(b:bat[:oid,:any_1]):bat[:oid,:bit] +pattern batsql.diff(b:bat[:oid,:any_1]):bat[:oid,:bit] address SQLdiff; comment return true if cur != prev row @@ -2671,11 +2671,11 @@ pattern batsql.next_value(sname:bat[:oid address mvc_bat_next_value; comment return the next value of the sequence -pattern batsql.rank{orderdependend}(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] +pattern batsql.rank(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] address SQLrank; comment return the ranked groups -pattern batsql.row_number{orderdependend}(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] +pattern batsql.row_number(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] address SQLrow_number; comment return the row_numer-ed groups @@ -40990,10 +40990,6 @@ command str.ascii(s:str):int address STRascii; comment Return unicode of head of string -command str.codeset():str -address STRcodeset; -comment Return the locale's codeset - command str.endsWith(s:str,suffix:str):bit address STRSuffix; comment Suffix check. @@ -41002,10 +40998,6 @@ command str.insert(s:str,start:int,l:int address STRinsert; comment Insert a string into another -command str.iconv(org:str,fromCs:str,toCs:str):str -address STRIconv; -comment String codeset conversion - command str.locate(s1:str,s2:str,start:int):int address STRlocate2; comment Locate the start position of a string 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 @@ -3146,15 +3146,15 @@ command batsql.dec_round(v:bat[:oid,:hge address hge_bat_dec_round_wrap; comment round off the value v to nearests multiple of r -pattern batsql.dense_rank{orderdependend}(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] +pattern batsql.dense_rank(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] address SQLdense_rank; comment return the densely ranked groups -pattern batsql.diff{orderdependend}(p:bat[:oid,:bit],b:bat[:oid,:any_1]):bat[:oid,:bit] +pattern batsql.diff(p:bat[:oid,:bit],b:bat[:oid,:any_1]):bat[:oid,:bit] address SQLdiff; comment return true if cur != prev row -pattern batsql.diff{orderdependend}(b:bat[:oid,:any_1]):bat[:oid,:bit] +pattern batsql.diff(b:bat[:oid,:any_1]):bat[:oid,:bit] address SQLdiff; comment return true if cur != prev row @@ -3194,11 +3194,11 @@ command batsql.round(v:bat[:oid,:hge],d: address hge_bat_round_wrap; comment round off the decimal v(d,s) to r digits behind the dot (if r < 0, before the dot) -pattern batsql.rank{orderdependend}(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] +pattern batsql.rank(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] address SQLrank; comment return the ranked groups -pattern batsql.row_number{orderdependend}(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] +pattern batsql.row_number(b:bat[:oid,:any_1],p:any_2,o:any_3):bat[:oid,:int] address SQLrow_number; comment return the row_numer-ed groups @@ -51929,10 +51929,6 @@ command str.ascii(s:str):int address STRascii; comment Return unicode of head of string -command str.codeset():str -address STRcodeset; -comment Return the locale's codeset - command str.endsWith(s:str,suffix:str):bit address STRSuffix; comment Suffix check. @@ -51941,10 +51937,6 @@ command str.insert(s:str,start:int,l:int address STRinsert; comment Insert a string into another -command str.iconv(org:str,fromCs:str,toCs:str):str -address STRIconv; -comment String codeset conversion - command str.locate(s1:str,s2:str,start:int):int address STRlocate2; comment Locate the start position of a string 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 @@ -1762,7 +1762,6 @@ str SRVsetServers(Client cntxt, MalBlkPt str STRBytes(int *res, const str *arg1); str STRConcat(str *res, const str *val1, const str *val2); str STRFromWChr(str *res, const int *at); -str STRIconv(str *res, const str *o, const str *fp, const str *tp); str STRLength(int *res, const str *arg1); str STRLower(str *res, const str *arg1); str STRLpad(str *res, const str *arg1, const int *len); @@ -1826,7 +1825,6 @@ str STRbatstrSearchcst(bat *ret, const b str STRbatstringLength(bat *ret, const bat *l); str STRbatsubstring(bat *ret, const bat *l, const bat *r, const bat *t); str STRbatsubstringcst(bat *ret, const bat *bid, const int *start, const int *length); -str STRcodeset(str *res); str STRinsert(str *ret, const str *s, const int *start, const int *l, const str *s2); str STRlikewrap(bit *ret, const str *s, const str *pat, const str *esc); str STRlikewrap2(bit *ret, const str *s, const str *pat); @@ -2392,7 +2390,6 @@ str optimizeMALBlock(Client cntxt, MalBl str optimizerCheck(Client cntxt, MalBlkPtr mb, str name, int actions, lng usec); str optimizerRef; str optimizer_prelude(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int orderDependendProp; str pack2Ref; str packRef; str parametersRef; diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -171,6 +171,41 @@ has_schemas_system(Mapi mid) return 0; } +/* return TRUE if the HUGEINT type exists */ +static int +has_hugeint(Mapi mid) +{ + MapiHdl hdl; + int ret; + + if ((hdl = mapi_query(mid, + "SELECT id " + "FROM sys.types " + "WHERE sqlname = 'hugeint'")) == NULL || + mapi_error(mid)) + goto bailout; + ret = mapi_get_row_count(hdl) == 1; + while ((mapi_fetch_row(hdl)) != 0) { + if (mapi_error(mid)) + goto bailout; + } + if (mapi_error(mid)) + goto bailout; + mapi_close_handle(hdl); + return ret; + + bailout: + if (hdl) { + if (mapi_result_error(hdl)) + mapi_explain_result(hdl, stderr); + else + mapi_explain_query(hdl, stderr); + mapi_close_handle(hdl); + } else + mapi_explain(mid, stderr); + return 0; +} + static int dump_foreign_keys(Mapi mid, const char *schema, const char *tname, const char *tid, stream *toConsole) { @@ -394,10 +429,11 @@ static int dump_column_definition( const char *schema, const char *tname, const char *tid, - int foreign); + int foreign, + int hashge); static int -dump_type(Mapi mid, stream *toConsole, char *c_type, char *c_type_digits, char *c_type_scale) +dump_type(Mapi mid, stream *toConsole, char *c_type, char *c_type_digits, char *c_type_scale, int hashge) { int space = 0; @@ -502,13 +538,19 @@ dump_type(Mapi mid, stream *toConsole, c space = mnstr_printf(toConsole, "DECIMAL"); } else if (strcmp(c_type, "table") == 0) { mnstr_printf(toConsole, "TABLE "); - dump_column_definition(mid, toConsole, NULL, NULL, c_type_digits, 1); + dump_column_definition(mid, toConsole, NULL, NULL, c_type_digits, 1, hashge); } else if (strcmp(c_type_digits, "0") == 0) { space = mnstr_printf(toConsole, "%s", toUpper(c_type)); } else if (strcmp(c_type_scale, "0") == 0) { space = mnstr_printf(toConsole, "%s(%s)", toUpper(c_type), c_type_digits); } else { + if (strcmp(c_type, "decimal") == 0) { + if (strcmp(c_type_digits, "39") == 0) + c_type_digits = "38"; + else if (!hashge && strcmp(c_type_digits, "19") == 0) + c_type_digits = "18"; + } space = mnstr_printf(toConsole, "%s(%s,%s)", toUpper(c_type), c_type_digits, c_type_scale); } @@ -516,7 +558,7 @@ dump_type(Mapi mid, stream *toConsole, c } static int -dump_column_definition(Mapi mid, stream *toConsole, const char *schema, const char *tname, const char *tid, int foreign) +dump_column_definition(Mapi mid, stream *toConsole, const char *schema, const char *tname, const char *tid, int foreign, int hashge) { MapiHdl hdl = NULL; char *query; @@ -586,7 +628,7 @@ dump_column_definition(Mapi mid, stream mnstr_printf(toConsole, "\t\"%s\"%*s ", c_name, CAP(slen - strlen(c_name)), ""); - space = dump_type(mid, toConsole, c_type, c_type_digits, c_type_scale); + space = dump_type(mid, toConsole, c_type, c_type_digits, c_type_scale, hashge); if (strcmp(c_null, "false") == 0) { mnstr_printf(toConsole, "%*s NOT NULL", CAP(13 - space), ""); @@ -763,6 +805,7 @@ describe_table(Mapi mid, char *schema, c int type = 0; size_t maxquerylen; char *sname = NULL; + int hashge; if (schema == NULL) { if ((sname = strchr(tname, '.')) != NULL) { @@ -778,6 +821,8 @@ describe_table(Mapi mid, char *schema, c schema = sname; } + hashge = has_hugeint(mid); + maxquerylen = 512 + strlen(tname) + strlen(schema); query = malloc(maxquerylen); @@ -830,7 +875,7 @@ describe_table(Mapi mid, char *schema, c "", schema, tname); - if (dump_column_definition(mid, toConsole, schema, tname, NULL, foreign)) + if (dump_column_definition(mid, toConsole, schema, tname, NULL, foreign, hashge)) goto bailout; if (type == 5) mnstr_printf(toConsole, " ON '%s'", view); diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list