Changeset: 8c8a34fa163b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8c8a34fa163b
Added Files:
        sql/test/Tests/setoptimizer.stable.out.Windows
Modified Files:
        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
        clients/ChangeLog.Apr2012
        clients/Tests/exports.stable.out
        clients/mapilib/mapi.c
        clients/mapilib/mapi.h
        clients/odbc/driver/ODBCDbc.c
        clients/odbc/driver/ODBCDbc.h
        clients/odbc/driver/SQLConnect.c
        clients/odbc/driver/SQLExecDirect.c
        clients/odbc/driver/SQLExecute.c
        clients/odbc/driver/SQLFetch.c
        clients/odbc/driver/SQLGetConnectAttr.c
        clients/odbc/driver/SQLMoreResults.c
        clients/odbc/driver/SQLSetConnectAttr.c
        common/stream/stream.c
        common/stream/stream.h
        monetdb5/mal/mal_resolve.mx
        monetdb5/optimizer/opt_prelude.c
        sql/backends/monet5/sql.mx
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_optimizer.c
        sql/scripts/23_skyserver.sql
        sql/server/rel_schema.c
        sql/server/sql_mvc.c
        sql/test/BugConstraints/Tests/add_constraint_1643522.stable.err
        sql/test/BugConstraints/Tests/drop_column_1643542.stable.err
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/limit_in_create_view.SF-924448.stable.err
        
sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
        
sql/test/BugTracker-2009/Tests/create_on_ro_db_crash.SF-2830238.stable.err
        sql/test/BugTracker-2009/Tests/drop-sequence-crash.SF-2854195.stable.err
        sql/test/BugTracker-2009/Tests/join_topn.SF-2654133.stable.out
        sql/test/BugTracker/Tests/drop_schema_crash.SF-1504794.stable.err
        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/mapi/Tests/php_monetdb.stable.out
        
sql/test/mserver5-sql-readonly/Tests/mserver5-sql-readonly-table.stable.err
        
sql/test/mserver5-sql-readonly/Tests/mserver5-sql-readonly-view.stable.err
        sql/test/zones.sql
        tools/merovingian/ChangeLog.Apr2012
        tools/merovingian/daemon/argvcmds.c
        tools/merovingian/daemon/controlrunner.c
        tools/mserver/mserver5.1
Branch: default
Log Message:

merging


diffs (truncated from 1668 to 300 lines):

diff --git a/NT/installer32/MonetDB-ODBC-Installer.vdproj 
b/NT/installer32/MonetDB-ODBC-Installer.vdproj
--- a/NT/installer32/MonetDB-ODBC-Installer.vdproj
+++ b/NT/installer32/MonetDB-ODBC-Installer.vdproj
@@ -566,8 +566,8 @@
         {
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:MonetDB ODBC Driver"
-        "ProductCode" = "8:{F553EDA6-208A-4F89-9783-7ADA935E014A}"
-        "PackageCode" = "8:{C3CFF53E-BE5C-4C30-B071-847452592499}"
+        "ProductCode" = "8:{4E161B98-9FC8-4512-97D8-EA76C354DA4D}"
+        "PackageCode" = "8:{D7B51DE5-F620-464F-89E1-5DE3D9103AB2}"
         "UpgradeCode" = "8:{C1F69378-3F5C-4120-8224-32F07D3458F3}"
         "RestartWWWService" = "11:FALSE"
         "RemovePreviousVersions" = "11:TRUE"
diff --git a/NT/installer32/MonetDB5-Geom-Module.vdproj 
b/NT/installer32/MonetDB5-Geom-Module.vdproj
--- a/NT/installer32/MonetDB5-Geom-Module.vdproj
+++ b/NT/installer32/MonetDB5-Geom-Module.vdproj
@@ -425,8 +425,8 @@
         {
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:MonetDB5 SQL GIS Module"
-        "ProductCode" = "8:{0EB6FD98-A8BB-4E40-A6AB-D0258F937766}"
-        "PackageCode" = "8:{28CF4984-296C-4CC3-8049-9CE19CC68F1E}"
+        "ProductCode" = "8:{A61BE52A-99A2-4503-BB5B-3837B0708862}"
+        "PackageCode" = "8:{5F8AB146-C5BB-4961-95DE-9848D2AF533A}"
         "UpgradeCode" = "8:{92C89C36-0E86-45E1-B3D8-0D6C91108F30}"
         "RestartWWWService" = "11:FALSE"
         "RemovePreviousVersions" = "11:TRUE"
diff --git a/NT/installer32/MonetDB5-SQL-Installer.vdproj 
b/NT/installer32/MonetDB5-SQL-Installer.vdproj
--- a/NT/installer32/MonetDB5-SQL-Installer.vdproj
+++ b/NT/installer32/MonetDB5-SQL-Installer.vdproj
@@ -5411,8 +5411,8 @@
         {
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:MonetDB5"
-        "ProductCode" = "8:{3639864D-963F-4E5C-A087-17A25EEEC36F}"
-        "PackageCode" = "8:{18713244-E915-4623-ABB4-FBA11E0CA986}"
+        "ProductCode" = "8:{66BABD32-D69D-4A89-A7F3-2655D4CD0641}"
+        "PackageCode" = "8:{D9B2D386-1461-43BC-9A63-93F1BA0D7921}"
         "UpgradeCode" = "8:{730C595B-DBA6-48D7-94B8-A98780AC92B6}"
         "AspNetVersion" = "8:4.0.30319.0"
         "RestartWWWService" = "11:FALSE"
diff --git a/NT/installer64/MonetDB-ODBC-Installer.vdproj 
b/NT/installer64/MonetDB-ODBC-Installer.vdproj
--- a/NT/installer64/MonetDB-ODBC-Installer.vdproj
+++ b/NT/installer64/MonetDB-ODBC-Installer.vdproj
@@ -566,8 +566,8 @@
         {
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:MonetDB ODBC Driver"
-        "ProductCode" = "8:{BCA28DEE-33C4-4897-85D5-98DA9747054A}"
-        "PackageCode" = "8:{D107C833-4867-4471-B5E7-36C3A5C26F2E}"
+        "ProductCode" = "8:{0DD096EA-A791-4D97-AD3C-5EC69F2A495E}"
+        "PackageCode" = "8:{B6C87B73-7277-46B8-B443-65665B5A634C}"
         "UpgradeCode" = "8:{95ACBC8C-BC4B-4901-AF70-48B54A5C20F7}"
         "RestartWWWService" = "11:FALSE"
         "RemovePreviousVersions" = "11:TRUE"
diff --git a/NT/installer64/MonetDB5-Geom-Module.vdproj 
b/NT/installer64/MonetDB5-Geom-Module.vdproj
--- a/NT/installer64/MonetDB5-Geom-Module.vdproj
+++ b/NT/installer64/MonetDB5-Geom-Module.vdproj
@@ -425,8 +425,8 @@
         {
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:MonetDB5 SQL GIS Module"
-        "ProductCode" = "8:{ED180113-0260-405D-BE84-051345482E57}"
-        "PackageCode" = "8:{7B8FF815-E532-4549-A621-10E9481DEED9}"
+        "ProductCode" = "8:{BD1A3C71-3A8E-421D-922D-2B7A19926B5C}"
+        "PackageCode" = "8:{471DD1DA-9C69-4289-821D-4CC329A8BA94}"
         "UpgradeCode" = "8:{8E6CDFDE-39B9-43D9-97B3-2440C012845C}"
         "RestartWWWService" = "11:FALSE"
         "RemovePreviousVersions" = "11:TRUE"
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
@@ -5411,8 +5411,8 @@
         {
         "Name" = "8:Microsoft Visual Studio"
         "ProductName" = "8:MonetDB5"
-        "ProductCode" = "8:{B90D913B-5C67-4BC7-9FB9-0157309A096D}"
-        "PackageCode" = "8:{70EC6B53-5D37-4A97-931B-2EA93C126810}"
+        "ProductCode" = "8:{ACC32EDD-13CE-4079-A6E7-D9DD94DA42EE}"
+        "PackageCode" = "8:{332EB6D8-73DD-48CA-83E7-BB1922FFE3BD}"
         "UpgradeCode" = "8:{839D3C90-B578-41E2-A004-431440F9E899}"
         "AspNetVersion" = "8:4.0.30319.0"
         "RestartWWWService" = "11:FALSE"
diff --git a/clients/ChangeLog.Apr2012 b/clients/ChangeLog.Apr2012
--- a/clients/ChangeLog.Apr2012
+++ b/clients/ChangeLog.Apr2012
@@ -1,6 +1,9 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
+* Fri Mar  9 2012 Sjoerd Mullender <sjo...@acm.org>
+- ODBC: Implemented the SQL_ATTR_CONNECTION_TIMEOUT attribute.
+
 * Tue Mar  6 2012 Sjoerd Mullender <sjo...@acm.org>
 - mclient now has a -a (--autocommit) option to turn off autocommit mode.
 
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
@@ -496,7 +496,7 @@ int mapi_split_line(MapiHdl hdl);
 MapiMsg mapi_start_talking(Mapi mid);
 MapiMsg mapi_store_field(MapiHdl hdl, int fnr, int outtype, void *outparam);
 MapiHdl mapi_stream_query(Mapi mid, const char *cmd, int windowsize);
-MapiMsg mapi_timeout(Mapi mid, int time);
+MapiMsg mapi_timeout(Mapi mid, unsigned int time);
 MapiMsg mapi_trace(Mapi mid, int flag);
 char *mapi_unquote(char *msg);
 MapiMsg mapi_virtual_result(MapiHdl hdl, int columns, const char 
**columnnames, const char **columntypes, const int *columnlengths, int 
tuplecount, const char ***tuples);
@@ -6169,6 +6169,7 @@ ssize_t mnstr_read_block(stream *s, void
 ssize_t mnstr_readline(stream *s, void *buf, size_t maxcnt);
 stream *mnstr_rstream(stream *s);
 void mnstr_set_byteorder(stream *s, char bigendian);
+void mnstr_settimeout(stream *s, unsigned int secs);
 int mnstr_type(stream *s);
 ssize_t mnstr_write(stream *s, const void *buf, size_t elmsize, size_t cnt);
 int mnstr_writeBte(stream *s, signed char val);
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -3049,12 +3049,14 @@ prepareQuery(MapiHdl hdl, const char *cm
 
 
 MapiMsg
-mapi_timeout(Mapi mid, int timeout)
+mapi_timeout(Mapi mid, unsigned int timeout)
 {
        mapi_check(mid, "mapi_timeout");
        if (mid->trace == MAPI_TRACE)
-               printf("Set timeout to %d\n", timeout);
-       return mapi_setError(mid, "Operation not yet implemented", 
"mapi_timeout", MERROR);
+               printf("Set timeout to %u\n", timeout);
+       mnstr_settimeout(mid->to, timeout);
+       mnstr_settimeout(mid->from, timeout);
+       return MOK;
 }
 
 static MapiMsg
diff --git a/clients/mapilib/mapi.h b/clients/mapilib/mapi.h
--- a/clients/mapilib/mapi.h
+++ b/clients/mapilib/mapi.h
@@ -207,7 +207,7 @@ mapi_export MapiMsg mapi_cache_freeup(Ma
 mapi_export MapiMsg mapi_quick_response(MapiHdl hdl, FILE *fd);
 mapi_export MapiMsg mapi_seek_row(MapiHdl hdl, mapi_int64 rowne, int whence);
 
-mapi_export MapiMsg mapi_timeout(Mapi mid, int time);
+mapi_export MapiMsg mapi_timeout(Mapi mid, unsigned int time);
 mapi_export int mapi_fetch_row(MapiHdl hdl);
 mapi_export mapi_int64 mapi_fetch_all_rows(MapiHdl hdl);
 mapi_export int mapi_get_field_count(MapiHdl hdl);
diff --git a/clients/odbc/driver/ODBCDbc.c b/clients/odbc/driver/ODBCDbc.c
--- a/clients/odbc/driver/ODBCDbc.c
+++ b/clients/odbc/driver/ODBCDbc.c
@@ -80,6 +80,7 @@ newODBCDbc(ODBCEnv *env)
        dbc->Connected = 0;
        dbc->sql_attr_autocommit = SQL_AUTOCOMMIT_ON;   /* default is 
autocommit */
        dbc->sql_attr_metadata_id = SQL_FALSE;
+       dbc->sql_attr_connection_timeout = 0;
        dbc->mid = NULL;
        dbc->major = 0;
        dbc->minor = 0;
diff --git a/clients/odbc/driver/ODBCDbc.h b/clients/odbc/driver/ODBCDbc.h
--- a/clients/odbc/driver/ODBCDbc.h
+++ b/clients/odbc/driver/ODBCDbc.h
@@ -67,6 +67,7 @@ typedef struct tODBCDRIVERDBC {
        int Connected;          /* 1 is Yes, 0 is No */
        SQLUINTEGER sql_attr_autocommit;
        SQLUINTEGER sql_attr_metadata_id;
+       SQLUINTEGER sql_attr_connection_timeout;
 
        /* MonetDB connection handle & status information */
        Mapi mid;               /* connection with server */
diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c
--- a/clients/odbc/driver/SQLConnect.c
+++ b/clients/odbc/driver/SQLConnect.c
@@ -266,6 +266,8 @@ SQLConnect_(ODBCDbc *dbc,
                if (dbc->major > 11 ||
                    (dbc->major == 11 && dbc->minor >= 5))
                        mapi_set_size_header(mid, 1);
+               /* set timeout after we're connected */
+               mapi_timeout(mid, dbc->sql_attr_connection_timeout);
        }
 
        return rc;
diff --git a/clients/odbc/driver/SQLExecDirect.c 
b/clients/odbc/driver/SQLExecDirect.c
--- a/clients/odbc/driver/SQLExecDirect.c
+++ b/clients/odbc/driver/SQLExecDirect.c
@@ -124,8 +124,8 @@ ODBCExecDirect(ODBCStmt *stmt, SQLCHAR *
        case MOK:
                break;
        case MTIMEOUT:
-               /* Communication link failure */
-               addStmtError(stmt, "08S01", mapi_error_str(stmt->Dbc->mid), 0);
+               /* Timeout expired / Communication link failure */
+               addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? 
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
                return SQL_ERROR;
        default:
                /* reuse variable for error string */
diff --git a/clients/odbc/driver/SQLExecute.c b/clients/odbc/driver/SQLExecute.c
--- a/clients/odbc/driver/SQLExecute.c
+++ b/clients/odbc/driver/SQLExecute.c
@@ -456,8 +456,8 @@ SQLExecute_(ODBCStmt *stmt)
        case MOK:
                break;
        case MTIMEOUT:
-               /* Communication link failure */
-               addStmtError(stmt, "08S01", mapi_error_str(stmt->Dbc->mid), 0);
+               /* Timeout expired / Communication link failure */
+               addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? 
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
                return SQL_ERROR;
        default:
                /* reuse variable query for error message */
diff --git a/clients/odbc/driver/SQLFetch.c b/clients/odbc/driver/SQLFetch.c
--- a/clients/odbc/driver/SQLFetch.c
+++ b/clients/odbc/driver/SQLFetch.c
@@ -110,8 +110,9 @@ SQLFetch_(ODBCStmt *stmt)
                        case MTIMEOUT:
                                if (statusp)
                                        *statusp = SQL_ROW_ERROR;
-                               /* Communication link failure */
-                               addStmtError(stmt, "08S01", 
mapi_error_str(stmt->Dbc->mid), 0);
+                               /* Timeout expired / Communication
+                                * link failure */
+                               addStmtError(stmt, 
stmt->Dbc->sql_attr_connection_timeout ? "HYT00" : "08S01", 
mapi_error_str(stmt->Dbc->mid), 0);
                                return SQL_ERROR;
                        default:
                                if (statusp)
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
@@ -74,7 +74,7 @@ SQLGetConnectAttr_(ODBCDbc *dbc,
                *(SQLUINTEGER *) ValuePtr = dbc->mid && 
mapi_is_connected(dbc->mid) ? SQL_CD_FALSE : SQL_CD_TRUE;
                break;
        case SQL_ATTR_CONNECTION_TIMEOUT:
-               *(SQLUINTEGER *) ValuePtr = 0;  /* no timeout */
+               *(SQLUINTEGER *) ValuePtr = dbc->sql_attr_connection_timeout;
                break;
        case SQL_ATTR_LOGIN_TIMEOUT:
                *(SQLUINTEGER *) ValuePtr = 0;  /* no timeout */
diff --git a/clients/odbc/driver/SQLMoreResults.c 
b/clients/odbc/driver/SQLMoreResults.c
--- a/clients/odbc/driver/SQLMoreResults.c
+++ b/clients/odbc/driver/SQLMoreResults.c
@@ -66,8 +66,8 @@ SQLMoreResults(SQLHSTMT StatementHandle)
                addStmtError(stmt, "HY000", mapi_error_str(stmt->Dbc->mid), 0);
                return SQL_ERROR;
        case MTIMEOUT:
-               /* Communication link failure */
-               addStmtError(stmt, "08S01", mapi_error_str(stmt->Dbc->mid), 0);
+               /* Timeout expired / Communication link failure */
+               addStmtError(stmt, stmt->Dbc->sql_attr_connection_timeout ? 
"HYT00" : "08S01", mapi_error_str(stmt->Dbc->mid), 0);
                return SQL_ERROR;
        default:
                return ODBCInitResult(stmt);
diff --git a/clients/odbc/driver/SQLSetConnectAttr.c 
b/clients/odbc/driver/SQLSetConnectAttr.c
--- a/clients/odbc/driver/SQLSetConnectAttr.c
+++ b/clients/odbc/driver/SQLSetConnectAttr.c
@@ -96,11 +96,15 @@ SQLSetConnectAttr_(ODBCDbc *dbc,
                        free(dbc->dbname);
                dbc->dbname = dupODBCstring(ValuePtr, StringLength);
                break;
+       case SQL_ATTR_CONNECTION_TIMEOUT:
+               dbc->sql_attr_connection_timeout = (SQLUINTEGER) (size_t) 
ValuePtr;
+               if (dbc->mid)
+                       mapi_timeout(dbc->mid, 
dbc->sql_attr_connection_timeout);
+               break;
 
                /* TODO: implement connection attribute behavior */
        case SQL_ATTR_ACCESS_MODE:
        case SQL_ATTR_ASYNC_ENABLE:
-       case SQL_ATTR_CONNECTION_TIMEOUT:
        case SQL_ATTR_LOGIN_TIMEOUT:
        case SQL_ATTR_ODBC_CURSORS:
        case SQL_ATTR_PACKET_SIZE:
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -130,6 +130,7 @@ struct stream {
        short access;           /* read/write */
        short type;             /* ascii/binary */
        char *name;
+       unsigned int timeout;
        union {
                void *p;
                int i;
@@ -146,6 +147,7 @@ struct stream {
        int (*fsync) (stream *s);
        int (*fgetpos) (stream *s, lng *p);
        int (*fsetpos) (stream *s, lng p);
+       void (*update_timeout) (stream *s);
 };
 
 int
@@ -226,6 +228,14 @@ mnstr_write(stream *s, const void *buf, 
 }
 
 void
+mnstr_settimeout(stream *s, unsigned int secs)
+{
+       s->timeout = secs;
+       if (s->update_timeout)
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to