Changeset: 6fe24f1c1316 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6fe24f1c1316
Modified Files:
ctest/tools/monetdbe/CMakeLists.txt
tools/monetdbe/CMakeLists.txt
tools/mserver/CMakeLists.txt
Branch: default
Log Message:
Merge with Jan2022 branch.
diffs (truncated from 2928 to 300 lines):
diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py
--- a/NT/mkodbcwxs.py
+++ b/NT/mkodbcwxs.py
@@ -82,10 +82,10 @@ def main():
id = 1
print(r' <Directory Id="lib" Name="lib">')
id = comp(features, id, 14,
- [r'bin\mapi.dll', # r'lib\mapi.pdb',
- r'lib\MonetODBC.dll', # r'lib\MonetODBC.pdb',
- r'lib\MonetODBCs.dll', # r'lib\MonetODBCs.pdb',
- r'bin\stream.dll', # r'lib\stream.pdb',
+ [r'bin\mapi.dll', r'lib\mapi.pdb',
+ r'lib\MonetODBC.dll', r'lib\MonetODBC.pdb',
+ r'lib\MonetODBCs.dll', r'lib\MonetODBCs.pdb',
+ r'bin\stream.dll', r'lib\stream.pdb',
vcpkg.format(r'bin\iconv-2.dll'),
vcpkg.format(r'bin\bz2.dll'),
vcpkg.format(r'bin\charset-1.dll'), # for iconv-2.dll
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -86,7 +86,7 @@ def main():
print(r' </Property>')
print(r' <Property Id="DEBUGEXISTS">')
print(r' <DirectorySearch Id="CheckFileDir1" Path="[INSTALLDIR]\bin"
Depth="0">')
- print(r' <FileSearch Id="CheckFile1" Name="libbat.pdb"/>')
+ print(r' <FileSearch Id="CheckFile1" Name="mserver5.pdb"/>')
print(r' </DirectorySearch>')
print(r' </Property>')
print(r' <Property Id="INCLUDEEXISTS">')
@@ -161,14 +161,14 @@ def main():
vcpkg.format(r'bin\lzma.dll'),
vcpkg.format(r'bin\pcre.dll'),
vcpkg.format(r'bin\zlib1.dll')])
- # id = comp(debug, id, 14,
- # [r'bin\mclient.pdb',
- # r'bin\mserver5.pdb',
- # r'bin\msqldump.pdb',
- # r'lib\libbat.pdb',
- # r'lib\libmapi.pdb',
- # r'lib\libmonetdb5.pdb',
- # r'lib\libstream.pdb'])
+ id = comp(debug, id, 14,
+ [r'bin\mclient.pdb',
+ r'bin\mserver5.pdb',
+ r'bin\msqldump.pdb',
+ r'lib\bat.pdb',
+ r'lib\mapi.pdb',
+ r'lib\monetdb5.pdb',
+ r'lib\stream.pdb'])
id = comp(geom, id, 14,
[vcpkg.format(r'bin\geos_c.dll'),
vcpkg.format(r'bin\geos.dll')])
diff --git a/clients/examples/C/CMakeLists.txt
b/clients/examples/C/CMakeLists.txt
--- a/clients/examples/C/CMakeLists.txt
+++ b/clients/examples/C/CMakeLists.txt
@@ -80,6 +80,20 @@ if(TESTING)
DESTINATION
${CMAKE_INSTALL_BINDIR}
COMPONENT clienttest)
+
+ if(WIN32)
+ install(FILES
+ $<TARGET_PDB_FILE:sample0>
+ $<TARGET_PDB_FILE:sample1>
+ $<TARGET_PDB_FILE:sample4>
+ $<TARGET_PDB_FILE:smack00>
+ $<TARGET_PDB_FILE:smack01>
+ $<TARGET_PDB_FILE:streamcat>
+ $<TARGET_PDB_FILE:bincopydata>
+ $<TARGET_PDB_FILE:bincopyloops>
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
+ OPTIONAL)
+ endif()
endif()
# vim: set ts=2:sw=2:et
diff --git a/clients/mapiclient/CMakeLists.txt
b/clients/mapiclient/CMakeLists.txt
--- a/clients/mapiclient/CMakeLists.txt
+++ b/clients/mapiclient/CMakeLists.txt
@@ -95,4 +95,12 @@ install(FILES
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
COMPONENT client)
+if(WIN32)
+ install(FILES
+ $<TARGET_PDB_FILE:mclient>
+ $<TARGET_PDB_FILE:msqldump>
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
+ OPTIONAL)
+endif()
+
# vim: set ts=2:sw=2:et
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -839,7 +839,8 @@ 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, bool foreign, bool
hashge)
+ const char *tname, const char *tid,
bool foreign,
+ bool hashge)
{
MapiHdl hdl = NULL;
char *query = NULL;
@@ -876,8 +877,7 @@ dump_column_definition(Mapi mid, stream
"c.type_digits, " /* 2 */
"c.type_scale, " /* 3 */
"c.\"null\", " /* 4 */
- "c.\"default\", " /* 5 */
- "c.number " /* 6 */
+ "c.number " /* 5 */
"FROM sys._columns c "
"WHERE c.table_id = %s "
"ORDER BY c.number", tid);
@@ -888,8 +888,7 @@ dump_column_definition(Mapi mid, stream
"c.type_digits, " /* 2 */
"c.type_scale, " /* 3 */
"c.\"null\", " /* 4 */
- "c.\"default\", " /* 5 */
- "c.number " /* 6 */
+ "c.number " /* 5 */
"FROM sys._columns c, "
"sys._tables t, "
"sys.schemas s "
@@ -909,7 +908,6 @@ dump_column_definition(Mapi mid, stream
char *c_type_digits = strdup(mapi_fetch_field(hdl, 2));
char *c_type_scale = strdup(mapi_fetch_field(hdl, 3));
const char *c_null = mapi_fetch_field(hdl, 4);
- const char *c_default = mapi_fetch_field(hdl, 5);
int space;
if (mapi_error(mid) || !c_type || !c_type_digits ||
!c_type_scale) {
@@ -918,6 +916,7 @@ dump_column_definition(Mapi mid, stream
free(c_type_scale);
goto bailout;
}
+
if (cnt)
mnstr_printf(toConsole, ",\n");
@@ -955,12 +954,9 @@ dump_column_definition(Mapi mid, stream
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), "");
+ CAP(13 - space), "");
space = 13;
}
- if (c_default != NULL)
- mnstr_printf(toConsole, "%*s DEFAULT %s",
- CAP(13 - space), "", c_default);
cnt++;
free(c_type);
@@ -973,6 +969,7 @@ dump_column_definition(Mapi mid, stream
goto bailout;
mapi_close_handle(hdl);
hdl = NULL;
+
/* presumably we don't need to order on id, since there should
only be a single primary key, but it doesn't hurt, and the
code is then close to the code for the uniqueness
@@ -1143,6 +1140,7 @@ describe_table(Mapi mid, const char *sch
MapiHdl hdl = NULL;
char *query = NULL, *view = NULL, *remark = NULL, *sname = NULL, *s =
NULL, *t = NULL;
int type = 0;
+ int ca = 0;
size_t maxquerylen;
bool hashge;
@@ -1171,7 +1169,7 @@ describe_table(Mapi mid, const char *sch
goto bailout;
snprintf(query, maxquerylen,
- "SELECT t.name, t.query, t.type, t.id, c.remark "
+ "SELECT t.name, t.query, t.type, t.id, c.remark,
t.commit_action "
"FROM sys.schemas s, sys._tables t "
"LEFT OUTER JOIN sys.comments c ON t.id = c.id "
"WHERE s.name = '%s' "
@@ -1190,6 +1188,7 @@ describe_table(Mapi mid, const char *sch
view = mapi_fetch_field(hdl, 1);
table_id = atoi(mapi_fetch_field(hdl, 3));
remark = mapi_fetch_field(hdl, 4);
+ ca = atoi(mapi_fetch_field(hdl, 5));
}
if (mapi_error(mid)) {
view = NULL;
@@ -1263,17 +1262,23 @@ describe_table(Mapi mid, const char *sch
}
/* the table is a real table */
mnstr_printf(toConsole, "CREATE %sTABLE ",
- type == 3 ? "MERGE " :
- type == 4 ? "STREAM " :
- type == 5 ? "REMOTE " :
- type == 6 ? "REPLICA " :
- "");
+ ca > 0 ? "GLOBAL TEMPORARY " :
+ type == 3 ? "MERGE " :
+ type == 4 ? "STREAM " :
+ type == 5 ? "REMOTE " :
+ type == 6 ? "REPLICA " :
+ "");
dquoted_print(toConsole, schema, ".");
dquoted_print(toConsole, tname, " ");
if (dump_column_definition(mid, toConsole, schema, tname, NULL,
foreign, hashge))
goto bailout;
- if (type == 5) { /* remote table */
+ if (ca > 0) { /* temporary table */
+ mnstr_printf(toConsole, " ON COMMIT %s",
+ ca == 1 /* the default */ ?
"DELETE ROWS" :
+ ca == 2 ? "PRESERVE ROWS" :
+ /* ca == 3 */ "DROP");
+ } else if (type == 5) { /* remote table */
char *rt_user = NULL;
char *rt_hash = NULL;
snprintf(query, maxquerylen,
@@ -1810,7 +1815,7 @@ dump_table_data(Mapi mid, const char *sc
certain characters escaped */
squoted_print(toConsole, s, '"', noescape);
} else if (strcmp(tp, "blob") == 0) {
- /* inside blobs, special characters
+ /* inside blobs, special characters
don't occur */
mnstr_printf(toConsole, "\"%s\"", s);
} else
@@ -1867,7 +1872,72 @@ bailout:
}
static int
-dump_table_alters(Mapi mid, const char *schema, const char *tname, stream
*toConsole)
+dump_table_storage(Mapi mid, const char *schema, const char *tname, stream
*toConsole)
+{
+ char *sname = NULL;
+ char *query = NULL;
+ size_t maxquerylen;
+ MapiHdl hdl = NULL;
+ char *s = NULL;
+ char *t = NULL;
+ int rc = 1;
+
+ if (schema == NULL) {
+ if ((sname = strchr(tname, '.')) != NULL) {
+ size_t len = sname - tname + 1;
+
+ sname = malloc(len);
+ if (sname == NULL)
+ goto bailout;
+ strcpy_len(sname, tname, len);
+ tname += len;
+ } else if ((sname = get_schema(mid)) == NULL) {
+ goto bailout;
+ }
+ schema = sname;
+ }
+
+ maxquerylen = 5120 + 2*strlen(tname) + 2*strlen(schema);
+ query = malloc(maxquerylen);
+ s = sescape(schema);
+ t = sescape(tname);
+ if (query == NULL || s == NULL || t == NULL)
+ goto bailout;
+
+ snprintf(query, maxquerylen,
+ "SELECT name, storage FROM sys._columns "
+ "WHERE storage IS NOT NULL "
+ "AND table_id = (SELECT id FROM sys._tables WHERE name
= '%s' "
+ "AND schema_id = (SELECT id FROM sys.schemas WHERE
name = '%s'))",
+ t, s);
+ if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid))
+ goto bailout;
+ while ((mapi_fetch_row(hdl)) != 0) {
+ const char *cname = mapi_fetch_field(hdl, 0);
+ const char *storage = mapi_fetch_field(hdl, 1);
+ char *stg = sescape(storage);
+ if (stg == NULL)
+ goto bailout;
+ mnstr_printf(toConsole, "ALTER TABLE ");
+ dquoted_print(toConsole, schema, ".");
+ dquoted_print(toConsole, tname, " ");
+ mnstr_printf(toConsole, "ALTER COLUMN ");
+ dquoted_print(toConsole, cname, " ");
+ mnstr_printf(toConsole, "SET STORAGE '%s';\n", stg);
+ free(stg);
+ }
+ rc = 0; /* success */
+ bailout:
+ free(query);
+ free(s);
+ free(t);
+ mapi_close_handle(hdl); /* may be NULL */
+ free(sname); /* may be NULL */
+ return rc;
+}
+
+static int
+dump_table_access(Mapi mid, const char *schema, const char *tname, stream
*toConsole)
{
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list