wxString s;
tableID = ++lastTableID;
s.Printf(wxT("wxDbTable constructor (%-20s) tableID:[%6lu] pDb:[%p]"), tblName.c_str(), tableID, pDb);
-
+
#ifdef __WXDEBUG__
wxTablesInUse *tableInUse;
tableInUse = new wxTablesInUse();
if (!found)
{
wxString msg;
- msg.Printf(wxT("Unable to find the tableID in the linked\nlist of tables in use.\n\n%s"),s);
+ msg.Printf(wxT("Unable to find the tableID in the linked\nlist of tables in use.\n\n%s"),s.c_str());
wxLogDebug (msg,wxT("NOTICE..."));
}
}
BuildSelectStmt(sqlStmt, queryType, distinct);
pDb->WriteSqlLog(sqlStmt);
}
-/*
- This is the block of code that got added during the 2.2.1 merge with
- the 2.2 main branch that somehow got added here when it should not have. - gt
- else
- wxStrcpy(sqlStmt, pSqlStmt);
-
- SQLFreeStmt(hstmt, SQL_CLOSE);
- if (SQLExecDirect(hstmt, (UCHAR FAR *) sqlStmt, SQL_NTS) == SQL_SUCCESS)
- return(TRUE);
- else
- {
- pDb->DispAllErrors(henv, hdbc, hstmt);
- return(FALSE);
- }
-*/
// Make sure the cursor is closed first
if (!CloseCursor(hstmt))
return(FALSE);
// Only append Updateable columns
if (colDefs[i].Updateable)
{
- if (! firstColumn)
+ if (!firstColumn)
pSqlStmt += wxT(",");
else
firstColumn = FALSE;
if (pDb->Dbms() == dbmsDB2 ||
pDb->Dbms() == dbmsMY_SQL ||
pDb->Dbms() == dbmsSYBASE_ASE ||
+ pDb->Dbms() == dbmsINTERBASE ||
pDb->Dbms() == dbmsMS_SQL_SERVER)
{
if (colDefs[i].KeyField)
{
switch (pDb->Dbms())
{
+ case dbmsINFORMIX:
case dbmsSYBASE_ASA:
case dbmsSYBASE_ASE:
case dbmsMY_SQL:
}
sqlStmt += wxT(")");
- if (pDb->Dbms() == dbmsSYBASE_ASA ||
+ if (pDb->Dbms() == dbmsINFORMIX ||
+ pDb->Dbms() == dbmsSYBASE_ASA ||
pDb->Dbms() == dbmsSYBASE_ASE)
{
sqlStmt += wxT(" CONSTRAINT ");
for (i = 0; i < noIdxCols; i++)
{
sqlStmt += pIdxDefs[i].ColName;
- /* Postgres doesn't cope with ASC */
- if (pDb->Dbms() != dbmsPOSTGRES)
+
+ // Postgres and SQL Server 7 do not support the ASC/DESC keywords for index columns
+ if (!((pDb->Dbms() == dbmsMS_SQL_SERVER) && (strncmp(pDb->dbInf.dbmsVer,"07",2)==0)) &&
+ !(pDb->Dbms() == dbmsPOSTGRES))
{
if (pIdxDefs[i].Ascending)
sqlStmt += wxT(" ASC");
else
sqlStmt += wxT(" DESC");
}
+ else
+ wxASSERT_MSG(!pIdxDefs[i].Ascending, "Datasource does not support DESCending index columns");
if ((i + 1) < noIdxCols)
sqlStmt += wxT(",");
if (!((pDb->Dbms() == dbmsSYBASE_ASA && !wxStrcmp(pDb->sqlState,wxT("42000"))) || // v5.x (and lower?)
(pDb->Dbms() == dbmsSYBASE_ASE && !wxStrcmp(pDb->sqlState,wxT("37000"))) ||
(pDb->Dbms() == dbmsMS_SQL_SERVER && !wxStrcmp(pDb->sqlState,wxT("S1000"))) ||
+ (pDb->Dbms() == dbmsINTERBASE && !wxStrcmp(pDb->sqlState,wxT("S1000"))) ||
(pDb->Dbms() == dbmsSYBASE_ASE && !wxStrcmp(pDb->sqlState,wxT("S0002"))) || // Base table not found
(pDb->Dbms() == dbmsMY_SQL && !wxStrcmp(pDb->sqlState,wxT("42S12"))) || // tested by Christopher Ludwik Marino-Cebulski using v3.23.21beta
(pDb->Dbms() == dbmsPOSTGRES && !wxStrcmp(pDb->sqlState,wxT("08S01")))
if (fieldName.Length() > (unsigned int) DB_MAX_COLUMN_NAME_LEN)
{
- wxStrncpy (colDefs[index].ColName, fieldName, DB_MAX_COLUMN_NAME_LEN);
+ int assertColumnNameTooLong = 0;
+ wxStrncpy(colDefs[index].ColName, fieldName, DB_MAX_COLUMN_NAME_LEN);
colDefs[index].ColName[DB_MAX_COLUMN_NAME_LEN] = 0;
+ wxString tmpMsg;
+ tmpMsg.Printf("Column name '%s' is too long. Truncated to '%s'.",fieldName.c_str(),colDefs[index].ColName);
+ wxASSERT_MSG(assertColumnNameTooLong,tmpMsg.c_str());
}
else
wxStrcpy(colDefs[index].ColName, fieldName);