From 988e51f30a6cb9f40cd47d777200c35e1e49bc6c Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 10 Dec 2011 16:03:24 +0000 Subject: [PATCH] Sql: Refactored SQL 'default app cursor', added per-thread SQL option, added secondary SQLR 'default app cursor' git-svn-id: svn://ultimatepp.org/upp/trunk@4290 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/Core.h | 1 + uppsrc/MySql/MySql.cpp | 1 + uppsrc/MySql/MySql.h | 2 +- uppsrc/MySql/MySqlSchema.h | 2 + uppsrc/ODBC/ODBC.cpp | 1133 +++++++++++++++--------------- uppsrc/Oracle/Oci7.cpp | 1 + uppsrc/Oracle/Oci8.cpp | 1 + uppsrc/PostgreSQL/PostgreSQL.cpp | 6 +- uppsrc/Sql/Script.cpp | 113 +++ uppsrc/Sql/Session.cpp | 184 +++++ uppsrc/Sql/Sql.cpp | 122 +--- uppsrc/Sql/Sql.upp | 2 + uppsrc/Sql/SqlStatement.cpp | 88 --- uppsrc/Sql/Sqls.h | 45 +- 14 files changed, 913 insertions(+), 788 deletions(-) create mode 100644 uppsrc/Sql/Script.cpp create mode 100644 uppsrc/Sql/Session.cpp diff --git a/uppsrc/Core/Core.h b/uppsrc/Core/Core.h index 0d4b48d1c..58a74f1a9 100644 --- a/uppsrc/Core/Core.h +++ b/uppsrc/Core/Core.h @@ -5,6 +5,7 @@ #if defined(flagMT) #define _MULTITHREADED + #define MULTITHREADED #ifdef flagDLL #define flagUSEMALLOC #endif diff --git a/uppsrc/MySql/MySql.cpp b/uppsrc/MySql/MySql.cpp index 463abf03d..1fbf40121 100644 --- a/uppsrc/MySql/MySql.cpp +++ b/uppsrc/MySql/MySql.cpp @@ -109,6 +109,7 @@ bool MySqlSession::Open(const char *connect) { } void MySqlSession::Close() { + SessionClose(); if(mysql) { mysql_close(mysql); mysql = NULL; diff --git a/uppsrc/MySql/MySql.h b/uppsrc/MySql/MySql.h index 70ac73f4b..a1aa733ae 100644 --- a/uppsrc/MySql/MySql.h +++ b/uppsrc/MySql/MySql.h @@ -13,7 +13,7 @@ #endif #ifdef PLATFORM_POSIX -#include +#include #endif NAMESPACE_UPP diff --git a/uppsrc/MySql/MySqlSchema.h b/uppsrc/MySql/MySqlSchema.h index 7cb549026..f7d2fa471 100644 --- a/uppsrc/MySql/MySqlSchema.h +++ b/uppsrc/MySql/MySqlSchema.h @@ -101,5 +101,7 @@ #undef UNIQUE +#undef REFERENCES + #undef TIMESTAMP #undef COMMENT diff --git a/uppsrc/ODBC/ODBC.cpp b/uppsrc/ODBC/ODBC.cpp index 117472f61..27291c09a 100644 --- a/uppsrc/ODBC/ODBC.cpp +++ b/uppsrc/ODBC/ODBC.cpp @@ -1,566 +1,567 @@ -#include "ODBC.h" - -NAMESPACE_UPP - -#define LLOG(x) // LOG(x) - -class ODBCConnection : public SqlConnection -{ -public: - ODBCConnection(ODBCSession *session); - virtual ~ODBCConnection(); - - void Clear(); - - virtual void SetParam(int i, const Value& r); - virtual bool Execute(); - virtual int GetRowsProcessed() const; - virtual bool Fetch(); - virtual void GetColumn(int i, Ref r) const; - virtual void Cancel(); - virtual SqlSession& GetSession() const { ASSERT(session); return *session; } - virtual String GetUser() const { ASSERT(session); return session->user; } - virtual String ToString() const; - virtual Value GetInsertedId() const; - -private: - friend class ODBCSession; - - ODBCSession *session; - struct Param { - int ctype; - int sqltype; - String data; - SQLLEN li; - }; - Array param, bparam; - String last_insert_table; - - int rowsprocessed; - Vector< Vector > number; - Vector< Vector > num64; - Vector< Vector > text; - Vector< Vector