Kaydet (Commit) 49007f0d authored tarafından Javier Fernandez's avatar Javier Fernandez Kaydeden (comit) Andrzej J.R. Hunt

GetTables uses now a Statement, instead of a PreparedStatement.

Change-Id: I8dee162d25360114931ed401d6a6c512ad0c3ec6
üst 7f38b8d6
...@@ -61,7 +61,6 @@ namespace connectivity ...@@ -61,7 +61,6 @@ namespace connectivity
ODatabaseMetaData::ODatabaseMetaData(OConnection* _pCon) ODatabaseMetaData::ODatabaseMetaData(OConnection* _pCon)
: m_pConnection(_pCon) : m_pConnection(_pCon)
, m_pGetTablesStm(NULL)
, m_bUseCatalog(sal_True) , m_bUseCatalog(sal_True)
{ {
OSL_ENSURE(m_pConnection,"ODatabaseMetaData::ODatabaseMetaData: No connection set!"); OSL_ENSURE(m_pConnection,"ODatabaseMetaData::ODatabaseMetaData: No connection set!");
...@@ -865,29 +864,36 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables( ...@@ -865,29 +864,36 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables(
ODatabaseMetaDataResultSet* pResultSet = new ODatabaseMetaDataResultSet(ODatabaseMetaDataResultSet::eTables); ODatabaseMetaDataResultSet* pResultSet = new ODatabaseMetaDataResultSet(ODatabaseMetaDataResultSet::eTables);
Reference< XResultSet > xResultSet = pResultSet; Reference< XResultSet > xResultSet = pResultSet;
Reference< XStatement > statement = m_pConnection->createStatement();
if (!m_pGetTablesStm.is()) static const OUString wld("%");
{ OUString query(
m_pGetTablesStm = m_pConnection->prepareStatement(
"SELECT " "SELECT "
"'schema' as schema, RDB$RELATION_NAME, RDB$SYSTEM_FLAG, RDB$RELATION_TYPE, 'description' as description " // avoid duplicates "'schema' as schema, RDB$RELATION_NAME, RDB$SYSTEM_FLAG, RDB$RELATION_TYPE, 'description' as description " // avoid duplicates
"FROM RDB$RELATIONS " "FROM RDB$RELATIONS "
"WHERE (RDB$RELATION_TYPE = 0 OR RDB$RELATION_TYPE = 1) " "WHERE (RDB$RELATION_TYPE = 0 OR RDB$RELATION_TYPE = 1) ");
"AND 'schema' LIKE ? "
"AND RDB$RELATION_NAME LIKE ? ");
}
SAL_INFO("connectivity.firebird", "=> ODatabaseMetaData::getTables(). "
"Setting query parameters.");
Reference< XParameters > parameters( m_pGetTablesStm, UNO_QUERY_THROW ); if (!schemaPattern.isEmpty())
parameters->setString( 1 , schemaPattern ); {
parameters->setString( 2 , tableNamePattern ); if (schemaPattern.match(wld))
query += "AND 'schema' LIKE '%' ";
else
query += "AND 'schema' = '%' ";
query = query.replaceAll(wld, schemaPattern);
}
if (!tableNamePattern.isEmpty())
{
if (tableNamePattern.match(wld))
query += "AND RDB$RELATION_NAME LIKE '%' ";
else
query += "AND RDB$RELATION_NAME = '%' ";
query = query.replaceAll(wld, tableNamePattern);
}
SAL_INFO("connectivity.firebird", "=> ODatabaseMetaData::getTables(). " SAL_INFO("connectivity.firebird", "=> ODatabaseMetaData::getTables(). "
"About to execute the query."); "About to execute the query.");
Reference< XResultSet > rs = m_pGetTablesStm->executeQuery(); Reference< XResultSet > rs = statement->executeQuery(query.getStr());
Reference< XRow > xRow( rs, UNO_QUERY_THROW ); Reference< XRow > xRow( rs, UNO_QUERY_THROW );
ODatabaseMetaDataResultSet::ORows aRows; ODatabaseMetaDataResultSet::ORows aRows;
int rows = 0; int rows = 0;
...@@ -902,18 +908,15 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables( ...@@ -902,18 +908,15 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables(
OUString desc = xRow->getString( 5 ); OUString desc = xRow->getString( 5 );
rows++; rows++;
if (rows < 10) if (rows < 10)
SAL_INFO("connectivity.firebird", "=> ODatabaseMetaData::getTables(). " printf("DEBUG !!! row %i : ", rows);
"Row: " << rows); else
else printf("DEBUG !!! row %i: ", rows);
SAL_INFO("connectivity.firebird", "=> ODatabaseMetaData::getTables(). " printf("%s | ", OUStringToOString( schema, RTL_TEXTENCODING_UTF8 ).getStr());
"Row: " << rows); printf("%s | ", OUStringToOString( aTableName, RTL_TEXTENCODING_UTF8 ).getStr());
SAL_INFO("connectivity.firebird", "=> ODatabaseMetaData::getTables(). " printf("%i | ", systemFlag);
<< schema << " | " printf("%i | ", systemFlag);
<< aTableName << " | " printf("%s | \n", OUStringToOString( desc, RTL_TEXTENCODING_UTF8 ).getStr());
<< systemFlag << " | "
<< systemFlag << " | "
<< OUStringToOString);
OUString aTableType; OUString aTableType;
if( 1 == systemFlag ) if( 1 == systemFlag )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment