Skip to content

Commit

Permalink
WIP: Don't quote identifiers in dialect 1 database
Browse files Browse the repository at this point in the history
* Dialect 1 databases don't support quoted identifiers. The code would
  need large changes to properly support this, so this fixes at least the
  most glaring issue - "Browse data" with setting always quote identifiers
  did not work at all so far for a dialect 1 database. This changes
  Identifier::getQuoted() in a way that the database dialect is checked.
  • Loading branch information
Michael Hieke committed Nov 5, 2012
1 parent d9f542a commit 115d809
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 11 deletions.
2 changes: 1 addition & 1 deletion src/metadata/MetadataTemplateCmdHandler.cpp
Expand Up @@ -751,7 +751,7 @@ void MetadataTemplateCmdHandler::handleTemplateCmd(TemplateProcessor *tp,
else if (cmdParams[0] == wxT("is_read_only"))
processedText += getBooleanAsString(db->getInfo().getReadOnly());
else if (cmdParams[0] == wxT("sql_dialect"))
processedText += wxString() << db->getInfo().getDialect();
processedText += wxString() << db->getSqlDialect();
else if (cmdParams[0] == wxT("default_charset"))
processedText += db->getDatabaseCharset();
else if (cmdParams[0] == wxT("sweep_interval"))
Expand Down
14 changes: 7 additions & 7 deletions src/metadata/database.cpp
Expand Up @@ -144,11 +144,6 @@ int DatabaseInfo::getBuffers() const
return buffersM;
}
//-----------------------------------------------------------------------------
int DatabaseInfo::getDialect() const
{
return dialectM;
}
//-----------------------------------------------------------------------------
bool DatabaseInfo::getForcedWrites() const
{
return forcedWritesM;
Expand Down Expand Up @@ -232,7 +227,6 @@ void DatabaseInfo::load(const IBPP::Database database)
&buffersM, &sweepM, &forcedWritesM, &reserveM, &readOnlyM);
database->TransactionInfo(&oldestTransactionM, &oldestActiveTransactionM,
&oldestSnapshotM, &nextTransactionM);
dialectM = database->Dialect();
loadTimeMillisM = ::wxGetLocalTimeMillis();
}
//-----------------------------------------------------------------------------
Expand Down Expand Up @@ -326,7 +320,7 @@ bool DatabaseAuthenticationMode::getUseEncryptedPassword() const
// Database class
Database::Database()
: MetadataItem(ntDatabase), metadataLoaderM(0), connectedM(false),
connectionCredentialsM(0), charsetConverterM(0), idM(0)
connectionCredentialsM(0), charsetConverterM(0), dialectM(3), idM(0)
{
}
//-----------------------------------------------------------------------------
Expand Down Expand Up @@ -1127,6 +1121,7 @@ void Database::connect(const wxString& password, ProgressIndicator* indicator)
checkProgressIndicatorCanceled(indicator);
// load database information
setPropertiesLoaded(false);
dialectM = databaseM->Dialect();
databaseInfoM.load(databaseM);
setPropertiesLoaded(true);

Expand Down Expand Up @@ -1461,6 +1456,11 @@ wxString Database::getPath() const
return pathM;
}
//-----------------------------------------------------------------------------
int Database::getSqlDialect() const
{
return dialectM;
}
//-----------------------------------------------------------------------------
wxString Database::getDatabaseCharset() const
{
return databaseCharsetM;
Expand Down
5 changes: 2 additions & 3 deletions src/metadata/database.h
Expand Up @@ -83,7 +83,6 @@ class DatabaseInfo
private:
int odsM;
int odsMinorM;
int dialectM;

int pageSizeM;
int buffersM;
Expand All @@ -109,8 +108,6 @@ class DatabaseInfo
bool getODSVersionIsHigherOrEqualTo(int versionMajor) const;
bool getODSVersionIsHigherOrEqualTo(int versionMajor, int versionMinor) const;

int getDialect() const;

int getPageSize() const;
int getBuffers() const;
int getPages() const;
Expand Down Expand Up @@ -164,6 +161,7 @@ class Database: public MetadataItem,
wxString connectionRoleM;

wxString pathM;
int dialectM;
Credentials credentialsM;
Credentials* connectionCredentialsM;
DatabaseAuthenticationMode authenticationModeM;
Expand Down Expand Up @@ -271,6 +269,7 @@ class Database: public MetadataItem,
void getDatabaseTriggers(std::vector<Trigger *>& list);

wxString getPath() const;
int getSqlDialect() const;
wxString getDatabaseCharset() const;
wxString getConnectionCharset() const;
wxString getConnectionInfoString() const;
Expand Down
6 changes: 6 additions & 0 deletions src/metadata/metadataitem.cpp
Expand Up @@ -631,6 +631,12 @@ wxString MetadataItem::getName_() const
//-----------------------------------------------------------------------------
wxString MetadataItem::getQuotedName() const
{
if (DatabasePtr db = getDatabase())
{
// dialect 1 does not support quoted identifiers
if (db->getSqlDialect() == 1)
return identifierM.get();
}
return identifierM.getQuoted();
}
//-----------------------------------------------------------------------------
Expand Down

0 comments on commit 115d809

Please sign in to comment.