Changeset: f4fdefb857b8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f4fdefb857b8
Added Files:
monetdb5/optimizer/Tests/groups00.mal
monetdb5/optimizer/Tests/groups00.stable.err
monetdb5/optimizer/Tests/groups00.stable.out
monetdb5/optimizer/opt_groups.mx
Removed Files:
monetdb5/optimizer/Tests/derivePath00.mal
monetdb5/optimizer/Tests/groupderive.mal
monetdb5/optimizer/Tests/groupderive.stable.err
monetdb5/optimizer/Tests/groupderive.stable.out
monetdb5/optimizer/opt_derivepath.mx
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/extras/mal_optimizer_template/opt_sql_append.mx
monetdb5/mal/mal_function.c
monetdb5/mal/mal_resolve.mx
monetdb5/modules/kernel/Tests/vacuum.mal
monetdb5/modules/kernel/Tests/vacuum.stable.out
monetdb5/modules/mal/Tests/inspect05.stable.out
monetdb5/modules/mal/Tests/inspect05.stable.out.Windows
monetdb5/modules/mal/mal_init.mal
monetdb5/optimizer/Makefile.ag
monetdb5/optimizer/Tests/All
monetdb5/optimizer/opt_pipes.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_support.c
monetdb5/optimizer/opt_support.h
sql/backends/monet5/datacell/datacell.c
sql/backends/monet5/datacell/opt_datacell.c
sql/backends/monet5/sql.mx
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_optimizer.h
sql/scripts/23_skyserver.sql
sql/server/rel_dump.c
sql/server/rel_optimizer.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_select.h
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/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/Tests/setoptimizer.stable.err
sql/test/Tests/setoptimizer.stable.out
sql/test/Tests/setoptimizer.stable.out.Windows
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: sciql
Log Message:
merged from default
diffs (truncated from 3277 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 <[email protected]>
+- ODBC: Implemented the SQL_ATTR_CONNECTION_TIMEOUT attribute.
+
* Tue Mar 6 2012 Sjoerd Mullender <[email protected]>
- 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);
@@ -6196,6 +6196,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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list