Changeset: 84f55105229b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=84f55105229b
Modified Files:
        geom/monetdb5/geom.mx
        monetdb5/mal/mal_recycle.c
        monetdb5/mal/mal_recycle.h
        monetdb5/modules/mal/Tests/inspect05.stable.out
        monetdb5/modules/mal/Tests/inspect05.stable.out.Windows
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/clients.mal
        monetdb5/modules/mal/recycle.c
        monetdb5/modules/mal/tablet_sql.c
        monetdb5/modules/mal/trader.c
        monetdb5/optimizer/opt_joinpath.c
        monetdb5/optimizer/opt_octopus.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_recycler.c
        monetdb5/scheduler/run_octopus.c
        sql/backends/monet5/Makefile.ag
        sql/backends/monet5/sql.mx
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_result.mx
        sql/backends/monet5/sql_scenario.c
        sql/storage/bat/bat_storage.c
        sql/storage/bat/res_table.c
        sql/storage/restrict/restrict_storage.c
Branch: headless
Log Message:

Merge with default branch.


diffs (truncated from 3185 to 300 lines):

diff --git a/NT/installer64/MonetDB5-SQL-Installer.vdproj 
b/NT/installer64/MonetDB5-SQL-Installer.vdproj
--- a/NT/installer64/MonetDB5-SQL-Installer.vdproj
+++ b/NT/installer64/MonetDB5-SQL-Installer.vdproj
@@ -2681,7 +2681,7 @@
             }
             
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_667BD650736E43C9A8B6899179FA0CAA"
             {
-            "SourcePath" = "8:share\\doc\\MonetDB-SQL-11.7.0\\dump-restore.txt"
+            "SourcePath" = "8:share\\doc\\MonetDB-SQL-11.8.0\\dump-restore.txt"
             "TargetName" = "8:dump-restore.txt"
             "Tag" = "8:"
             "Folder" = "8:_6C21CE578F0941D09FDD9951A229FF37"
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
@@ -3479,6 +3479,7 @@ str CMDbatpartition(Client cntxt, MalBlk
 str CMDbatpartition2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDbatsingleton(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CMDbatunpack(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
+str CMDbbp(int *NS, int *HT, int *TT, int *CNT, int *REFCNT, int *LREFCNT, int 
*LOCATION, int *HEAT, int *DIRTY, int *STATUS, int *KIND);
 str CMDbbpCount(int *ret);
 str CMDbbpDirty(int *ret);
 str CMDbbpDiskReads(lng *ret);
diff --git a/clients/mapiclient/Tests/mclient--help.stable.err.Windows 
b/clients/mapiclient/Tests/mclient--help.stable.err.Windows
--- a/clients/mapiclient/Tests/mclient--help.stable.err.Windows
+++ b/clients/mapiclient/Tests/mclient--help.stable.err.Windows
@@ -21,7 +21,7 @@ Options are:
  -E charset  | --encoding=charset specify encoding (character set) of the 
terminal
  -f kind     | --format=kind      specify output format {csv,tab,raw,sql,xml}
  -H          | --history         load/save cmdline history (default off)
- -i          | --interactive[=tm] read stdin after command line args, use time 
formatting {ms,s,m}
+ -i          | --interactive[=tm] interpret \ commands on stdin, use time 
formatting {ms,s,m}
  -l language | --language=lang    {sql,mal}
  -L logfile  | --log=logfile     save client/server interaction
  -s stmt     | --statement=stmt  run single statement
@@ -35,6 +35,7 @@ SQL specific opions
  -w nr       | --width=nr         for pagination
  -D          | --dump             create an SQL dump
  -N          | --inserts          use INSERT INTO statements when dumping
+The file argument can be - for stdin
 
 # 18:57:57 >  
 # 18:57:57 >  Done.
diff --git a/clients/odbc/driver/ODBCUtil.h b/clients/odbc/driver/ODBCUtil.h
--- a/clients/odbc/driver/ODBCUtil.h
+++ b/clients/odbc/driver/ODBCUtil.h
@@ -126,21 +126,18 @@ extern char *ODBCutf82wchar(const SQLCHA
        } while (0)
 #define fixWcharOut(r, s, sl, ws, wsl, wslp, cw, errfunc, hdl)         \
        do {                                                            \
-               if (SQL_SUCCEEDED(r)) {                                 \
-                       char *e = ODBCutf82wchar((s), (sl), (ws), (wsl) / (cw), 
&(sl)); \
-                       if (e) {                                        \
-                               /* General error */                     \
-                               errfunc((hdl), "HY000", e, 0);          \
-                               (r) = SQL_ERROR;                        \
-                       } else if ((sl) * (cw) >= (wsl)) {              \
-                               /* String data, right-truncated */      \
-                               errfunc((hdl), "01004", NULL, 0);       \
-                               (r) = SQL_SUCCESS_WITH_INFO;            \
-                       }                                               \
-                       if (wslp)                                       \
-                               *(wslp) = (sl) * (cw);                  \
+               char *e = ODBCutf82wchar((s), (sl), (ws), (wsl) / (cw), &(sl)); 
\
+               if (e) {                                                \
+                       /* General error */                             \
+                       errfunc((hdl), "HY000", e, 0);                  \
+                       (r) = SQL_ERROR;                                \
+               } else if ((sl) * (cw) >= (wsl)) {                      \
+                       /* String data, right-truncated */              \
+                       errfunc((hdl), "01004", NULL, 0);               \
+                       (r) = SQL_SUCCESS_WITH_INFO;                    \
                }                                                       \
-               free(s);                                                \
+               if (wslp)                                               \
+                       *(wslp) = (sl) * (cw);                          \
        } while (0)
 #endif /* WITH_WCHAR */
 
diff --git a/clients/odbc/driver/SQLBrowseConnect.c 
b/clients/odbc/driver/SQLBrowseConnect.c
--- a/clients/odbc/driver/SQLBrowseConnect.c
+++ b/clients/odbc/driver/SQLBrowseConnect.c
@@ -302,8 +302,11 @@ SQLBrowseConnectW(SQLHDBC ConnectionHand
                   addDbcError, dbc, return SQL_ERROR);
        out = malloc(1024);
        rc = SQLBrowseConnect_(dbc, in, SQL_NTS, out, 1024, &n);
-       fixWcharOut(rc, out, n, OutConnectionString, BufferLength,
-                   StringLength2Ptr, 1, addDbcError, dbc);
+       if (SQL_SUCCEEDED(rc) || rc == SQL_NEED_DATA) {
+               fixWcharOut(rc, out, n, OutConnectionString, BufferLength,
+                           StringLength2Ptr, 1, addDbcError, dbc);
+       }
+       free(out);
        if (in)
                free(in);
        return rc;
diff --git a/clients/odbc/driver/SQLColAttribute.c 
b/clients/odbc/driver/SQLColAttribute.c
--- a/clients/odbc/driver/SQLColAttribute.c
+++ b/clients/odbc/driver/SQLColAttribute.c
@@ -340,10 +340,14 @@ SQLColAttributeW(SQLHSTMT StatementHandl
        rc = SQLColAttribute_(stmt, ColumnNumber, FieldIdentifier, ptr,
                              n, &n, NumericAttributePtr);
 
-       if (ptr != CharacterAttributePtr)
-               fixWcharOut(rc, ptr, n, CharacterAttributePtr, BufferLength,
-                           StringLengthPtr, 2, addStmtError, stmt);
-       else if (StringLengthPtr)
+       if (ptr != CharacterAttributePtr) {
+               if (SQL_SUCCEEDED(rc)) {
+                       fixWcharOut(rc, ptr, n, CharacterAttributePtr,
+                                   BufferLength, StringLengthPtr, 2,
+                                   addStmtError, stmt);
+               }
+               free(ptr);
+       } else if (StringLengthPtr)
                *StringLengthPtr = n;
 
        return rc;
diff --git a/clients/odbc/driver/SQLColAttributes.c 
b/clients/odbc/driver/SQLColAttributes.c
--- a/clients/odbc/driver/SQLColAttributes.c
+++ b/clients/odbc/driver/SQLColAttributes.c
@@ -181,10 +181,14 @@ SQLColAttributesW(SQLHSTMT StatementHand
        rc = SQLColAttributes_(stmt, ColumnNumber, FieldIdentifier, ptr,
                               n, &n, NumericAttributePtr);
 
-       if (ptr != CharacterAttributePtr)
-               fixWcharOut(rc, ptr, n, CharacterAttributePtr, BufferLength,
-                           StringLengthPtr, 2, addStmtError, stmt);
-       else if (StringLengthPtr)
+       if (ptr != CharacterAttributePtr) {
+               if (SQL_SUCCEEDED(rc)) {
+                       fixWcharOut(rc, ptr, n, CharacterAttributePtr,
+                                   BufferLength, StringLengthPtr, 2,
+                                   addStmtError, stmt);
+               }
+               free(ptr);
+       } else if (StringLengthPtr)
                *StringLengthPtr = n;
 
        return rc;
diff --git a/clients/odbc/driver/SQLDataSources.c 
b/clients/odbc/driver/SQLDataSources.c
--- a/clients/odbc/driver/SQLDataSources.c
+++ b/clients/odbc/driver/SQLDataSources.c
@@ -147,12 +147,16 @@ SQLDataSourcesW(SQLHENV EnvironmentHandl
                             server, 100, &length1,
                             descr, 100, &length2);
 
-       fixWcharOut(rc, server, length1,
-                   ServerName, BufferLength1, NameLength1,
-                   1, addEnvError, env);
-       fixWcharOut(rc, descr, length2,
-                   Description, BufferLength2, NameLength2,
-                   1, addEnvError, env);
+       if (SQL_SUCCEEDED(rc)) {
+               fixWcharOut(rc, server, length1,
+                           ServerName, BufferLength1, NameLength1,
+                           1, addEnvError, env);
+               fixWcharOut(rc, descr, length2,
+                           Description, BufferLength2, NameLength2,
+                           1, addEnvError, env);
+       }
+       free(server);
+       free(descr);
 
        return rc;
 }
diff --git a/clients/odbc/driver/SQLDescribeCol.c 
b/clients/odbc/driver/SQLDescribeCol.c
--- a/clients/odbc/driver/SQLDescribeCol.c
+++ b/clients/odbc/driver/SQLDescribeCol.c
@@ -225,8 +225,11 @@ SQLDescribeColW(SQLHSTMT StatementHandle
                             ColumnSizePtr,
                             DecimalDigitsPtr,
                             NullablePtr);
-       fixWcharOut(rc, colname, n, ColumnName, BufferLength, NameLengthPtr,
-                   1, addStmtError, stmt);
+       if (SQL_SUCCEEDED(rc)) {
+               fixWcharOut(rc, colname, n, ColumnName, BufferLength,
+                           NameLengthPtr, 1, addStmtError, stmt);
+       }
+       free(colname);
 
        return rc;
 }
diff --git a/clients/odbc/driver/SQLDriverConnect.c 
b/clients/odbc/driver/SQLDriverConnect.c
--- a/clients/odbc/driver/SQLDriverConnect.c
+++ b/clients/odbc/driver/SQLDriverConnect.c
@@ -434,8 +434,11 @@ SQLDriverConnectW(SQLHDBC ConnectionHand
        out = malloc(n);
        rc = SQLDriverConnect_(dbc, WindowHandle, in, SQL_NTS, out, n, &n,
                               DriverCompletion, 0);
-       fixWcharOut(rc, out, n, OutConnectionString, BufferLength,
-                   StringLength2Ptr, 1, addDbcError, dbc);
+       if (SQL_SUCCEEDED(rc)) {
+               fixWcharOut(rc, out, n, OutConnectionString, BufferLength,
+                           StringLength2Ptr, 1, addDbcError, dbc);
+       }
+       free(out);
        if (in)
                free(in);
        return rc;
diff --git a/clients/odbc/driver/SQLGetConnectAttr.c 
b/clients/odbc/driver/SQLGetConnectAttr.c
--- a/clients/odbc/driver/SQLGetConnectAttr.c
+++ b/clients/odbc/driver/SQLGetConnectAttr.c
@@ -196,10 +196,13 @@ SQLGetConnectAttrW(SQLHDBC ConnectionHan
        rc = SQLGetConnectAttr_(dbc, Attribute, ptr, n, &n);
 
        if (ptr != ValuePtr) {
-               SQLSMALLINT nn = (SQLSMALLINT) n;
+               if (SQL_SUCCEEDED(rc)) {
+                       SQLSMALLINT nn = (SQLSMALLINT) n;
 
-               fixWcharOut(rc, ptr, nn, ValuePtr, BufferLength,
-                           StringLengthPtr, 2, addDbcError, dbc);
+                       fixWcharOut(rc, ptr, nn, ValuePtr, BufferLength,
+                                   StringLengthPtr, 2, addDbcError, dbc);
+               }
+               free(ptr);
        } else if (StringLengthPtr)
                *StringLengthPtr = n;
 
diff --git a/clients/odbc/driver/SQLGetConnectOption.c 
b/clients/odbc/driver/SQLGetConnectOption.c
--- a/clients/odbc/driver/SQLGetConnectOption.c
+++ b/clients/odbc/driver/SQLGetConnectOption.c
@@ -135,11 +135,15 @@ SQLGetConnectOptionW(SQLHDBC ConnectionH
        rc = SQLGetConnectOption_(dbc, Option, ptr);
 
        if (ptr != ValuePtr) {
-               SQLSMALLINT n = (SQLSMALLINT) strlen((char *) ptr);
-               SQLSMALLINT *nullp = NULL;
+               if (SQL_SUCCEEDED(rc)) {
+                       SQLSMALLINT n = (SQLSMALLINT) strlen((char *) ptr);
+                       SQLSMALLINT *nullp = NULL;
 
-               fixWcharOut(rc, ptr, n, ValuePtr, SQL_MAX_OPTION_STRING_LENGTH,
-                           nullp, 2, addDbcError, dbc);
+                       fixWcharOut(rc, ptr, n, ValuePtr,
+                                   SQL_MAX_OPTION_STRING_LENGTH, nullp, 2,
+                                   addDbcError, dbc);
+               }
+               free(ptr);
        }
 
        return rc;
diff --git a/clients/odbc/driver/SQLGetCursorName.c 
b/clients/odbc/driver/SQLGetCursorName.c
--- a/clients/odbc/driver/SQLGetCursorName.c
+++ b/clients/odbc/driver/SQLGetCursorName.c
@@ -121,8 +121,11 @@ SQLGetCursorNameW(SQLHSTMT StatementHand
        n++;                    /* account for NUL byte */
        cursor = malloc(n);
        rc = SQLGetCursorName_(stmt, cursor, BufferLength, &n);
-       fixWcharOut(rc, cursor, n, CursorName, BufferLength,
-                   NameLengthPtr, 1, addStmtError, stmt);
+       if (SQL_SUCCEEDED(rc))    {
+               fixWcharOut(rc, cursor, n, CursorName, BufferLength,
+                           NameLengthPtr, 1, addStmtError, stmt);
+       }
+       free(cursor);
 
        return rc;
 }
diff --git a/clients/odbc/driver/SQLGetDescField.c 
b/clients/odbc/driver/SQLGetDescField.c
--- a/clients/odbc/driver/SQLGetDescField.c
+++ b/clients/odbc/driver/SQLGetDescField.c
@@ -377,10 +377,13 @@ SQLGetDescFieldW(SQLHDESC DescriptorHand
        rc = SQLGetDescField_(desc, RecordNumber, FieldIdentifier, ptr, n, &n);
 
        if (ptr != ValuePtr) {
-               SQLSMALLINT nn = (SQLSMALLINT) n;
+               if (SQL_SUCCEEDED(rc)) {
+                       SQLSMALLINT nn = (SQLSMALLINT) n;
 
-               fixWcharOut(rc, ptr, nn, ValuePtr, BufferLength,
-                           StringLengthPtr, 2, addDescError, desc);
+                       fixWcharOut(rc, ptr, nn, ValuePtr, BufferLength,
+                                   StringLengthPtr, 2, addDescError, desc);
+               }
+               free(ptr);
        } else if (StringLengthPtr)
                *StringLengthPtr = n;
 
diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -867,10 +867,13 @@ SQLGetInfoW(SQLHDBC ConnectionHandle,
 
        rc = SQLGetInfo_(dbc, InfoType, ptr, n, &n);
 
-       if (ptr != InfoValuePtr)
-               fixWcharOut(rc, ptr, n, InfoValuePtr, BufferLength,
-                           StringLengthPtr, 2, addDbcError, dbc);
-       else if (StringLengthPtr)
+       if (ptr != InfoValuePtr) {
+               if (SQL_SUCCEEDED(rc)) {
+                       fixWcharOut(rc, ptr, n, InfoValuePtr, BufferLength,
+                                   StringLengthPtr, 2, addDbcError, dbc);
+               }
+               free(ptr);
+       } else if (StringLengthPtr)
                *StringLengthPtr = n;
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to