monetdb-java: default - Branch cleanup_types has been merged int...
Changeset: 41095d357c2e for monetdb-java URL: https://dev.monetdb.org/hg/monetdb-java/rev/41095d357c2e Modified Files: tests/JDBC_API_Tester.java Branch: default Log Message: Branch cleanup_types has been merged into default, so enable the condition where type_digits is now returning a lower number. diffs (21 lines): diff --git a/tests/JDBC_API_Tester.java b/tests/JDBC_API_Tester.java --- a/tests/JDBC_API_Tester.java +++ b/tests/JDBC_API_Tester.java @@ -753,7 +753,7 @@ final public class JDBC_API_Tester { handleExecuteDDL(stmt, action, "type", "xml", "CREATE TYPE xml EXTERNAL NAME xml"); try { - final boolean isPostDec2023 = !(dbmsMajorVersion == 11 && dbmsMinorVersion <= 51); // Change 51 into 49 after branch cleanup_types has been merged into default + final boolean isPostDec2023 = !(dbmsMajorVersion == 11 && dbmsMinorVersion <= 49); DatabaseMetaData dbmd = con.getMetaData(); // inspect the catalog by use of dbmd functions @@ -1141,7 +1141,7 @@ final public class JDBC_API_Tester { "COMMENT ON FUNCTION sys.statistics() IS 'sys.statistics() function comment';"); try { - final boolean isPostDec2023 = !(dbmsMajorVersion == 11 && dbmsMinorVersion <= 51); // Change 51 into 49 after branch cleanup_types has been merged into default + final boolean isPostDec2023 = !(dbmsMajorVersion == 11 && dbmsMinorVersion <= 49); // query the catalog by calling DatabaseMetaData methods compareResultSet(dbmd.getCatalogs(), "getCatalogs()", "Resultset with 1 columns\n" + ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org
monetdb-java: default - Adjust JDBC_API_Tester to accept new beh...
Changeset: 16aea99c987f for monetdb-java URL: https://dev.monetdb.org/hg/monetdb-java/rev/16aea99c987f Modified Files: tests/JDBC_API_Tester.java Branch: default Log Message: Adjust JDBC_API_Tester to accept new behavior of returning a varchar instead of clob or char as metadata. This new behavior applies to MonetDB servers 11.50 or higher. diffs (201 lines): diff --git a/tests/JDBC_API_Tester.java b/tests/JDBC_API_Tester.java --- a/tests/JDBC_API_Tester.java +++ b/tests/JDBC_API_Tester.java @@ -37,13 +37,14 @@ import org.monetdb.jdbc.types.URL; * Only when it deviates the output is sent to system err, see compareExpectedOutput(). * * @author Martin van Dinther - * @version 0.2 + * @version 0.3 */ final public class JDBC_API_Tester { private StringBuilder sb; // buffer to collect the test output private Connection con; // main connection shared by all tests private int dbmsMajorVersion; private int dbmsMinorVersion; + private boolean isPostDec2023; // flag to support version specific output private boolean foundDifferences = false; final private static int sbInitLen = 5224; @@ -72,6 +73,9 @@ final public class JDBC_API_Tester { DatabaseMetaData dbmd = jt.con.getMetaData(); jt.dbmsMajorVersion = dbmd.getDatabaseMajorVersion(); jt.dbmsMinorVersion = dbmd.getDatabaseMinorVersion(); + // from version 11.50 the MonetDB server returns different metadata for + // integer digits (1 less) and for clob and char columns (now return varchar). + jt.isPostDec2023 = !(jt.dbmsMajorVersion == 11 && jt.dbmsMinorVersion <= 49); // run the tests jt.Test_Cautocommit(con_URL); @@ -753,7 +757,6 @@ final public class JDBC_API_Tester { handleExecuteDDL(stmt, action, "type", "xml", "CREATE TYPE xml EXTERNAL NAME xml"); try { - final boolean isPostDec2023 = !(dbmsMajorVersion == 11 && dbmsMinorVersion <= 49); DatabaseMetaData dbmd = con.getMetaData(); // inspect the catalog by use of dbmd functions @@ -792,7 +795,7 @@ final public class JDBC_API_Tester { compareResultSet(dbmd.getColumns(null, "sys", "table\\_types", null), "getColumns(null, sys, table\\_types, null)", "Resultset with 24 columns\n" + "TABLE_CAT TABLE_SCHEM TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME COLUMN_SIZE BUFFER_LENGTH DECIMAL_DIGITS NUM_PREC_RADIX NULLABLEREMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUBCHAR_OCTET_LENGTH ORDINAL_POSITIONIS_NULLABLE SCOPE_CATALOG SCOPE_SCHEMA SCOPE_TABLE SOURCE_DATA_TYPEIS_AUTOINCREMENT IS_GENERATEDCOLUMN\n" + - "char(1)varchar(1024) varchar(1024) varchar(1024) int varchar(1024) int int int int int varchar(65000) varchar(2048) int int bigint int varchar(3) char(1) char(1) char(1) smallintchar(3) varchar(3)\n" + + "char(1)varchar(1024) varchar(1024) varchar(1024) int varchar(1024) int int int int int varchar(65000) varchar(2048) int int bigint int varchar(3) char(1) char(1) char(1) smallint" + (isPostDec2023 ? "var" : "") + "char(3) varchar(3)\n" + "null sys table_types table_type_id 5 smallint" + (isPostDec2023 ? "15" : "16") + " 0 0 2 0 nullnull0 0 null1 NO nullnull nullnullNO NO\n" + "null sys table_types table_type_name 12 varchar 25 0 0 0 0 nullnull0 0 100 2 NO nullnullnullnullNO NO\n"); @@ -927,14 +930,14 @@ final public class JDBC_API_Tester { compareResultSet(dbmd.getUDTs(null, "sys", null, null), "getUDTs(null, sys, null, null)", "Resultset with 7 columns\n" + "TYPE_CAT TYPE_SCHEM TYPE_NAME CLASS_NAME DATA_TYPE REMARKS BASE_TYPE\n" + - "char(1)varchar(1024) varchar(1024) char(16)int varchar(256)smallint\n" + + "char(1)varchar(1024) varchar(1024) " + (isPostDec2023 ? "var" : "") + "char(16)int varchar(256)smallint\n" + "null sys xml java.lang.String2000 xml null\n"); int[] UDTtypes = { Types.STRUCT, Types.DISTINCT }; compareResultSet(dbmd.getUDTs(null, "sys", null, UDTtypes),
MonetDB: Dec2023 - First dump defaults and only then dump add ta...
Changeset: 52d17fea991f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/52d17fea991f Modified Files: clients/mapiclient/dump.c sql/test/testdb-previous-upgrade-hge/Tests/dump.stable.out sql/test/testdb-previous-upgrade/Tests/dump.stable.out sql/test/testdb-upgrade-hge/Tests/dump.stable.out sql/test/testdb-upgrade/Tests/dump.stable.out sql/test/testdb/Tests/dump-nogeom.stable.out sql/test/testdb/Tests/dump.stable.out sql/test/testdb/Tests/load.test Branch: Dec2023 Log Message: First dump defaults and only then dump add tables. This fixes bug #7453. diffs (truncated from 738 to 300 lines): diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -3154,6 +3154,123 @@ dump_database(Mapi mid, stream *toConsol mapi_close_handle(hdl); hdl = NULL; + /* dump views, functions and triggers */ + if ((hdl = mapi_query(mid, views_functions_triggers)) == NULL || + mapi_error(mid)) + goto bailout; + + while (rc == 0 && + mnstr_errnr(toConsole) == MNSTR_NO__ERROR && + mapi_fetch_row(hdl) != 0) { + char *id = strdup(mapi_fetch_field(hdl, 0)); + char *schema = strdup(mapi_fetch_field(hdl, 1)); + char *name = strdup(mapi_fetch_field(hdl, 2)); + const char *query = mapi_fetch_field(hdl, 3); + const char *remark = mapi_fetch_field(hdl, 4); + + if (mapi_error(mid) || id == NULL || schema == NULL || name == NULL) { + free(id); + free(schema); + free(name); + goto bailout; + } + if (sname != NULL && strcmp(schema, sname) != 0) { + free(id); + free(schema); + free(name); + continue; + } + if (curschema == NULL || strcmp(schema, curschema) != 0) { + if (curschema) + free(curschema); + curschema = strdup(schema); + if (curschema == NULL) { + free(id); + free(schema); + free(name); + goto bailout; + } + mnstr_printf(toConsole, "SET SCHEMA "); + dquoted_print(toConsole, curschema, ";\n"); + } + if (query) { + /* view or trigger */ + mnstr_printf(toConsole, "%s\n", query); + /* only views have comments due to query */ + comment_on(toConsole, "VIEW", schema, name, NULL, remark); + } else { + /* procedure */ + dump_functions(mid, toConsole, 0, schema, name, id); + } + free(id); + free(schema); + free(name); + } + mapi_close_handle(hdl); + hdl = NULL; + + /* dump DEFAULT clauses for tables */ + if (dump_table_defaults(mid, NULL, NULL, toConsole)) + goto bailout2; + + if (!describe) { + if (dump_foreign_keys(mid, NULL, NULL, NULL, toConsole)) + goto bailout2; + + /* dump sequences, part 2 */ + if ((hdl = mapi_query(mid, sequences2)) == NULL || + mapi_error(mid)) + goto bailout; + + while (mapi_fetch_row(hdl) != 0) { + const char *schema = mapi_fetch_field(hdl, 0); /* sch */ + const char *name = mapi_fetch_field(hdl, 1); /* seq */ + const char *restart = mapi_fetch_field(hdl, 3); /* rs */ + const char *minvalue; + const char *maxvalue; + const char *increment = mapi_fetch_field(hdl, 6); /* inc */ + const char *cycle = mapi_fetch_field(hdl, 8); /* cycle */ + + if (mapi_get_field_count(hdl) > 9) { + /* new version (Jan2022) of sys.describe_sequences */ + minvalue = mapi_fetch_field(hdl, 11); /* rmi */ + maxvalue = mapi_fetch_field(hdl, 12); /* rma */ + } else { + /* old version (pre Jan2022) of sys.describe_sequences */ + minvalue = mapi_fetch_field(hdl, 4); /* minvalue */ + maxvalue = mapi_fetch_field(hdl, 5); /* maxvalue */ +
MonetDB: default - Merge with Dec2023 branch.
Changeset: b2c166f7bd87 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/b2c166f7bd87 Modified Files: clients/mapiclient/dump.c gdk/gdk_bat.c sql/test/testdb/Tests/dump-nogeom.stable.out sql/test/testdb/Tests/dump.stable.out Branch: default Log Message: Merge with Dec2023 branch. diffs (truncated from 755 to 300 lines): diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -3203,6 +3203,123 @@ dump_database(Mapi mid, stream *sqlf, co mapi_close_handle(hdl); hdl = NULL; + /* dump views, functions and triggers */ + if ((hdl = mapi_query(mid, views_functions_triggers)) == NULL || + mapi_error(mid)) + goto bailout; + + while (rc == 0 && + mnstr_errnr(sqlf) == MNSTR_NO__ERROR && + mapi_fetch_row(hdl) != 0) { + char *id = strdup(mapi_fetch_field(hdl, 0)); + char *schema = strdup(mapi_fetch_field(hdl, 1)); + char *name = strdup(mapi_fetch_field(hdl, 2)); + const char *query = mapi_fetch_field(hdl, 3); + const char *remark = mapi_fetch_field(hdl, 4); + + if (mapi_error(mid) || id == NULL || schema == NULL || name == NULL) { + free(id); + free(schema); + free(name); + goto bailout; + } + if (sname != NULL && strcmp(schema, sname) != 0) { + free(id); + free(schema); + free(name); + continue; + } + if (curschema == NULL || strcmp(schema, curschema) != 0) { + if (curschema) + free(curschema); + curschema = strdup(schema); + if (curschema == NULL) { + free(id); + free(schema); + free(name); + goto bailout; + } + mnstr_printf(sqlf, "SET SCHEMA "); + dquoted_print(sqlf, curschema, ";\n"); + } + if (query) { + /* view or trigger */ + mnstr_printf(sqlf, "%s\n", query); + /* only views have comments due to query */ + comment_on(sqlf, "VIEW", schema, name, NULL, remark); + } else { + /* procedure */ + dump_functions(mid, sqlf, 0, schema, name, id); + } + free(id); + free(schema); + free(name); + } + mapi_close_handle(hdl); + hdl = NULL; + + /* dump DEFAULT clauses for tables */ + if (dump_table_defaults(mid, NULL, NULL, sqlf)) + goto bailout2; + + if (!describe) { + if (dump_foreign_keys(mid, NULL, NULL, NULL, sqlf)) + goto bailout2; + + /* dump sequences, part 2 */ + if ((hdl = mapi_query(mid, sequences2)) == NULL || + mapi_error(mid)) + goto bailout; + + while (mapi_fetch_row(hdl) != 0) { + const char *schema = mapi_fetch_field(hdl, 0); /* sch */ + const char *name = mapi_fetch_field(hdl, 1); /* seq */ + const char *restart = mapi_fetch_field(hdl, 3); /* rs */ + const char *minvalue; + const char *maxvalue; + const char *increment = mapi_fetch_field(hdl, 6); /* inc */ + const char *cycle = mapi_fetch_field(hdl, 8); /* cycle */ + + if (mapi_get_field_count(hdl) > 9) { + /* new version (Jan2022) of sys.describe_sequences */ + minvalue = mapi_fetch_field(hdl, 11); /* rmi */ + maxvalue = mapi_fetch_field(hdl, 12); /* rma */ + } else { + /* old version (pre Jan2022) of sys.describe_sequences */ + minvalue = mapi_fetch_field(hdl, 4); /* minvalue */ + maxvalue = mapi_fetch_field(hdl, 5); /* maxvalue */ + if (strcmp(minvalue, "0") == 0) + minvalue = NULL; + if (strcmp(maxvalue, "0") == 0) + maxvalue = NULL; + } + + if (sname != NULL && strcmp(schema, sname) != 0) +
MonetDB: default - Test msqldump with --outputdir argument.
Changeset: 9f1de51326e1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9f1de51326e1 Added Files: sql/test/testdb-reload2/Tests/All sql/test/testdb-reload2/Tests/reload.py sql/test/testdb-reload2/Tests/reload.timeout Branch: default Log Message: Test msqldump with --outputdir argument. diffs (109 lines): diff --git a/sql/test/testdb-reload2/Tests/All b/sql/test/testdb-reload2/Tests/All new file mode 100644 --- /dev/null +++ b/sql/test/testdb-reload2/Tests/All @@ -0,0 +1,1 @@ +reload diff --git a/sql/test/testdb-reload2/Tests/reload.py b/sql/test/testdb-reload2/Tests/reload.py new file mode 100644 --- /dev/null +++ b/sql/test/testdb-reload2/Tests/reload.py @@ -0,0 +1,92 @@ +'''\ +Load the "dump" from the sql/test/testdb test and dump it. Load that +dump into a fresh database and check the result of dumping that. +''' + +import os, sys, shutil, tempfile +try: +from MonetDBtesting import process +except ImportError: +import process +try: +from MonetDBtesting import sqllogictest +except ImportError: +import sqllogictest + +dbfarm = os.getenv('GDK_DBFARM') +tstdb = os.getenv('TSTDB') +tstsrcdir = os.getenv('TSTSRCDIR') + +if not tstdb or not dbfarm: +print('No TSTDB or GDK_DBFARM in environment') +sys.exit(1) + +tstdb2 = tstdb + '-clone' +if os.path.exists(os.path.join(dbfarm, tstdb2)): +shutil.rmtree(os.path.join(dbfarm, tstdb2)) + +with tempfile.TemporaryDirectory() as tmpdirname: +# start the first server +with process.server(stdin=process.PIPE, +stdout=process.PIPE, +stderr=process.PIPE, +mapiport='0') as s1: +# load data into the first server's database +with sqllogictest.SQLLogic(out=open(os.devnull, 'w')) as sql: +sql.connect(hostname='localhost', +port=s1.dbport, +database=s1.dbname) +sql.parse(os.path.join(tstsrcdir, os.pardir, os.pardir, + 'testdb', 'Tests', 'load.test')) +# dump the first server's database into tmpdirname +with process.client(lang='sqldump', +args=[f'--outputdir={tmpdirname}'], +server=s1, +stdin=process.PIPE, +stdout=process.PIPE, +stderr=process.PIPE) as d1: +d1out, d1err = d1.communicate() +s1out, s1err = s1.communicate() +sys.stdout.writelines([line for line in d1out.splitlines(keepends=True) if not line.startswith('#')]) +sys.stderr.writelines([line for line in d1err.splitlines(keepends=True) if not line.startswith('#')]) +sys.stdout.writelines([line for line in s1out.splitlines(keepends=True) if not line.startswith('#')]) +sys.stderr.writelines([line for line in s1err.splitlines(keepends=True) if not line.startswith('#')]) +# start the second server +with process.server(dbname=tstdb2, +mapiport='0', +stdin=process.PIPE, +stdout=process.PIPE, +stderr=process.PIPE) as s2: +# restore the first server's dump +with process.client(lang='sql', +args=[os.path.join(tmpdirname, 'dump.sql')], +format='trash', +echo=False, +server=s2, +stdin=process.PIPE, +stdout=process.PIPE, +stderr=process.PIPE) as c2: +c2out, c2err = c2.communicate() +# dump the second server's database +with process.client(lang='sqldump', +server=s2, +stdin=process.PIPE, +stdout=process.PIPE, +stderr=process.PIPE) as d2: +d2out, d2err = d2.communicate() +sys.stderr.write(d2err) +s2out, s2err = s2.communicate() +sys.stdout.writelines([line for line in s2out.splitlines(keepends=True) if not line.startswith('#')]) +sys.stderr.writelines([line for line in s2err.splitlines(keepends=True) if not line.startswith('#')]) + +if len(sys.argv) == 2 and sys.argv[1] == 'reload': +output = ''.join(d2out).splitlines(keepends=True) +while len(output) > 0 and output[0].startswith('--'): +del output[0] +stableout = os.path.join(tstsrcdir, '..', '..', 'testdb', 'Tests', 'dump-nogeom.stable.out') +stable = open(stableout, encoding='utf-8').readlines() +import difflib +for line in difflib.unified_diff(stable, output, fromfile='test', tofile=stableout): +sys.stderr.write(line) +else: +sys.stdout.writelines(d2out) diff --git a/sql/test/testdb-reload2/Tests/reload.timeout b/sql/test/testdb-reload2/Tests/reload.timeout new file mode
monetdb-java: default - Extend Test_DBCmetadata() with calls to ...
Changeset: aa30a3be8787 for monetdb-java URL: https://dev.monetdb.org/hg/monetdb-java/rev/aa30a3be8787 Modified Files: tests/JDBC_API_Tester.java Branch: default Log Message: Extend Test_DBCmetadata() with calls to DatabaseMetaData methods which return a String and need to sent a query to the server to get the info. diffs (39 lines): diff --git a/tests/JDBC_API_Tester.java b/tests/JDBC_API_Tester.java --- a/tests/JDBC_API_Tester.java +++ b/tests/JDBC_API_Tester.java @@ -1026,6 +1026,35 @@ final public class JDBC_API_Tester { sb.append("Failed to createStatement: ").append(e.getMessage()).append("\n"); } + try { + // test dbmd methods which sent a query to the server and return a String. + String s = dbmd.getSQLKeywords(); + if (s == null || s.length() < 10) + sb.append("getSQLKeywords()").append(" failed to return a large enough list\n"); + s = dbmd.getNumericFunctions(); + if (s == null || s.length() < 10) + sb.append("getNumericFunctions()").append(" failed to return a large enough list\n"); + s = dbmd.getStringFunctions(); + if (s == null || s.length() < 10) + sb.append("getStringFunctions()").append(" failed to return a large enough list\n"); + s = dbmd.getSystemFunctions(); + if (s == null || s.length() < 10) + sb.append("getSystemFunctions()").append(" failed to return a large enough list\n"); + s = dbmd.getTimeDateFunctions(); + if (s == null || s.length() < 10) + sb.append("getTimeDateFunctions()").append(" failed to return a large enough list\n"); + s = dbmd.getUserName(); + if (s == null || s.length() < 1) + sb.append("getUserName() failed to return a valid name\n"); + s = dbmd.getDatabaseProductVersion(); + if (s == null || s.length() < 1) + sb.append("getDatabaseProductVersion() failed to return a valid version\n"); + } catch (SQLException e) { + sb.append(e.getMessage()).append("\n"); + } + compareExpectedOutput("Test_DBCmetadata() testing dbmd.get...Functions() as String", ""); + sb.setLength(0);// clear the output log buffer + /* servers before Jan2022 (11.45) have a problem (server crash and db corruption) with indexes created on temp tables, so conditionally execute those commands and tests */ final boolean testCreateDropIndexOnTmpTables = !(dbmsMajorVersion == 11 && dbmsMinorVersion <= 43); ___ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org