24#include <rtl/ustrbuf.hxx>
28#include <com/sun/star/sdbc/ColumnSearch.hpp>
29#include <com/sun/star/sdbc/ColumnValue.hpp>
30#include <com/sun/star/sdbc/DataType.hpp>
31#include <com/sun/star/sdbc/IndexType.hpp>
32#include <com/sun/star/sdbc/ResultSetType.hpp>
33#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
34#include <com/sun/star/sdbc/SQLException.hpp>
35#include <com/sun/star/sdbc/TransactionIsolation.hpp>
36#include <com/sun/star/sdbc/XRow.hpp>
37#include <com/sun/star/sdbc/KeyRule.hpp>
38#include <com/sun/star/sdbc/Deferrability.hpp>
51 "ODatabaseMetaData::ODatabaseMetaData: No connection set!");
96 OSL_FAIL(
"Not implemented yet!");
149 OSL_FAIL(
"Not implemented yet!");
414 return aLevel == TransactionIsolation::READ_UNCOMMITTED
415 || aLevel == TransactionIsolation::READ_COMMITTED
416 || aLevel == TransactionIsolation::REPEATABLE_READ
417 || aLevel == TransactionIsolation::SERIALIZABLE;
422 return TransactionIsolation::REPEATABLE_READ;
601 uno::Reference< XStatement > xSelect =
m_pConnection->createStatement();
603 uno::Reference< XResultSet > xRs = xSelect->executeQuery(
"SELECT rdb$get_context('SYSTEM', 'ENGINE_VERSION') as version from rdb$database");
605 uno::Reference< XRow > xRow( xRs, UNO_QUERY_THROW );
606 return xRow->getString(1);
611 return "Firebird (engine12)";
641 return "ASCII_CHAR,ASCII_VAL,BIT_LENGTH,CHAR_LENGTH,CHAR_TO_UUID,CHARACTER_LENGTH,"
642 "GEN_UUID,HASH,LEFT,LOWER,LPAD,OCTET_LENGTH,OVERLAY,POSITION,REPLACE,REVERSE,"
643 "RIGHT,RPAD,SUBSTRING,TRIM,UPPER,UUID_TO_CHAR";
648 return "CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,DATEADD, DATEDIFF,"
649 "EXTRACT,'NOW','TODAY','TOMORROW','YESTERDAY'";
659 return "ABS,ACOS,ASIN,ATAN,ATAN2,BIN_AND,BIN_NOT,BIN_OR,BIN_SHL,"
660 "BIN_SHR,BIN_XOR,CEIL,CEILING,COS,COSH,COT,EXP,FLOOR,LN,"
661 "LOG,LOG10,MOD,PI,POWER,RAND,ROUND,SIGN,SIN,SINH,SQRT,TAN,TANH,TRUNC";
703 case ResultSetType::FORWARD_ONLY:
711 sal_Int32 aResultSetType,
712 sal_Int32 aConcurrency)
714 if (aResultSetType == ResultSetType::FORWARD_ONLY
715 && aConcurrency == ResultSetConcurrency::READ_ONLY)
796 aResults.push_back(aRow);
799 aResults.push_back(aRow);
802 aResults.push_back(aRow);
804 pResultSet->setRows(std::move(aResults));
810 SAL_INFO(
"connectivity.firebird",
"getTypeInfo()");
844 sal_Int16(ColumnSearch::FULL));
856 sal_Int16(ColumnSearch::FULL));
871 sal_Int16(ColumnSearch::NONE));
882 sal_Int16(ColumnSearch::NONE));
890 sal_Int16(ColumnSearch::FULL));
906 sal_Int16(ColumnSearch::FULL));
930 sal_Int16(ColumnSearch::FULL));
974 sal_Int16(ColumnSearch::FULL));
986 sal_Int16(ColumnSearch::FULL));
998 sal_Int16(ColumnSearch::FULL));
1002 tmp.push_back(aRow);
1010 sal_Int16(ColumnSearch::NONE));
1014 tmp.push_back(aRow);
1022 sal_Int16(ColumnSearch::BASIC));
1026 tmp.push_back(aRow);
1037 const OUString& sTable,
1038 const OUString& sColumnNamePattern)
1040 SAL_INFO(
"connectivity.firebird",
"getColumnPrivileges() with "
1042 <<
" & ColumnNamePattern: " << sColumnNamePattern);
1046 uno::Reference< XStatement > statement =
m_pConnection->createStatement();
1048 static const char wld[] =
"%";
1049 OUStringBuffer queryBuf(
1051 "priv.RDB$RELATION_NAME, "
1054 "priv.RDB$PRIVILEGE, "
1055 "priv.RDB$GRANT_OPTION, "
1056 "priv.RDB$FIELD_NAME "
1057 "FROM RDB$USER_PRIVILEGES priv ");
1060 OUString sAppend =
"WHERE priv.RDB$RELATION_NAME = '%' ";
1061 queryBuf.append(sAppend.replaceAll(
"%", sTable));
1063 if (!sColumnNamePattern.isEmpty())
1066 if (sColumnNamePattern.match(wld))
1067 sAppend =
"AND priv.RDB$FIELD_NAME LIKE '%' ";
1069 sAppend =
"AND priv.RDB$FIELD_NAME = '%' ";
1071 queryBuf.append(sAppend.replaceAll(wld, sColumnNamePattern));
1074 queryBuf.append(
" ORDER BY priv.RDB$FIELD, "
1075 "priv.RDB$PRIVILEGE");
1077 OUString
query = queryBuf.makeStringAndClear();
1079 uno::Reference< XResultSet > rs = statement->executeQuery(query);
1080 uno::Reference< XRow > xRow( rs, UNO_QUERY_THROW );
1084 aCurrentRow[0] =
new ORowSetValueDecorator();
1085 aCurrentRow[1] =
new ORowSetValueDecorator();
1086 aCurrentRow[2] =
new ORowSetValueDecorator();
1096 aCurrentRow[7] =
new ORowSetValueDecorator(xRow->getString(4));
1097 aCurrentRow[8] =
new ORowSetValueDecorator( ( xRow->getShort(5) == 1 ) ?
1098 OUString(
"YES") : OUString(
"NO"));
1100 aResults.push_back(aCurrentRow);
1103 pResultSet->setRows( std::move(aResults) );
1111 const OUString& tableNamePattern,
1112 const OUString& columnNamePattern)
1114 SAL_INFO(
"connectivity.firebird",
"getColumns() with "
1115 "TableNamePattern: " << tableNamePattern <<
1116 " & ColumnNamePattern: " << columnNamePattern);
1118 OUStringBuffer queryBuf(
"SELECT "
1119 "relfields.RDB$RELATION_NAME, "
1120 "relfields.RDB$FIELD_NAME, "
1121 "relfields.RDB$DESCRIPTION,"
1122 "relfields.RDB$DEFAULT_VALUE, "
1123 "relfields.RDB$FIELD_POSITION, "
1124 "fields.RDB$FIELD_TYPE, "
1125 "fields.RDB$FIELD_SUB_TYPE, "
1126 "fields.RDB$FIELD_LENGTH, "
1127 "fields.RDB$FIELD_PRECISION, "
1128 "fields.RDB$FIELD_SCALE, "
1133 "relfields.RDB$NULL_FLAG, "
1134 "fields.RDB$CHARACTER_LENGTH, "
1135 "charset.RDB$CHARACTER_SET_NAME "
1136 "FROM RDB$RELATION_FIELDS relfields "
1137 "JOIN RDB$FIELDS fields "
1138 "on (fields.RDB$FIELD_NAME = relfields.RDB$FIELD_SOURCE) "
1139 "LEFT JOIN RDB$CHARACTER_SETS charset "
1140 "on (fields.RDB$CHARACTER_SET_ID = charset.RDB$CHARACTER_SET_ID) "
1143 if (!tableNamePattern.isEmpty())
1146 if (tableNamePattern.match(
"%"))
1147 sAppend =
"AND relfields.RDB$RELATION_NAME LIKE '%' ";
1149 sAppend =
"AND relfields.RDB$RELATION_NAME = '%' ";
1151 queryBuf.append(sAppend.replaceAll(
"%", tableNamePattern));
1154 if (!columnNamePattern.isEmpty())
1157 if (columnNamePattern.match(
"%"))
1158 sAppend =
"AND relfields.RDB$FIELD_NAME LIKE '%' ";
1160 sAppend =
"AND relfields.RDB$FIELD_NAME = '%' ";
1162 queryBuf.append(sAppend.replaceAll(
"%", columnNamePattern));
1165 OUString
query = queryBuf.makeStringAndClear();
1167 uno::Reference< XStatement > statement =
m_pConnection->createStatement();
1168 uno::Reference< XResultSet > rs = statement->executeQuery(query);
1169 uno::Reference< XRow > xRow( rs, UNO_QUERY_THROW );
1174 aCurrentRow[0] =
new ORowSetValueDecorator();
1175 aCurrentRow[1] =
new ORowSetValueDecorator();
1176 aCurrentRow[2] =
new ORowSetValueDecorator();
1177 aCurrentRow[8] =
new ORowSetValueDecorator();
1178 aCurrentRow[10] =
new ORowSetValueDecorator(sal_Int32(10));
1179 aCurrentRow[14] =
new ORowSetValueDecorator();
1180 aCurrentRow[15] =
new ORowSetValueDecorator();
1190 short aScale = xRow->getShort(10);
1191 OUString sCharsetName = xRow->getString(13);
1193 sCharsetName = sCharsetName.trim();
1197 aCurrentRow[5] =
new ORowSetValueDecorator(aInfo.getSdbcType());
1199 aCurrentRow[6] =
new ORowSetValueDecorator(aInfo.getColumnTypeName());
1203 sal_Int32 aColumnSize = 0;
1208 aColumnSize = xRow->getShort(12);
1217 aColumnSize = xRow->getShort(9);
1228 aCurrentRow[7] =
new ORowSetValueDecorator(aColumnSize);
1233 aCurrentRow[9] =
new ORowSetValueDecorator(
static_cast<sal_Int16
>(-aScale) );
1236 if (xRow->getShort(11))
1238 aCurrentRow[11] =
new ORowSetValueDecorator(ColumnValue::NO_NULLS);
1242 aCurrentRow[11] =
new ORowSetValueDecorator(ColumnValue::NULLABLE);
1246 OUString aDescription;
1247 uno::Reference< XBlob > xBlob = xRow->getBlob(3);
1250 const sal_Int64 aBlobLength = xBlob->length();
1251 if (aBlobLength > SAL_MAX_INT32)
1253 SAL_WARN(
"connectivity.firebird",
"getBytes can't return " << aBlobLength <<
" bytes but only max " << SAL_MAX_INT32);
1254 aDescription = OUString(
reinterpret_cast<char*
>(xBlob->getBytes(1, SAL_MAX_INT32).getArray()),
1256 RTL_TEXTENCODING_UTF8);
1260 aDescription = OUString(
reinterpret_cast<char*
>(xBlob->getBytes(1,
static_cast<sal_Int32
>(aBlobLength)).getArray()),
1262 RTL_TEXTENCODING_UTF8);
1265 aCurrentRow[12] =
new ORowSetValueDecorator(aDescription);
1269 uno::Reference< XBlob > xDefaultValueBlob = xRow->getBlob(4);
1270 if (xDefaultValueBlob.is())
1274 aCurrentRow[13] =
new ORowSetValueDecorator();
1278 if (aType == SQL_TEXT)
1280 aCurrentRow[16] =
new ORowSetValueDecorator(xRow->getShort(8));
1282 else if (aType == SQL_VARYING)
1284 aCurrentRow[16] =
new ORowSetValueDecorator(sal_Int32(32767));
1288 aCurrentRow[16] =
new ORowSetValueDecorator(sal_Int32(0));
1292 short nColumnNumber = xRow->getShort(5);
1295 aCurrentRow[17] =
new ORowSetValueDecorator(sal_Int32(nColumnNumber + 1));
1298 if (xRow->getShort(9))
1300 aCurrentRow[18] =
new ORowSetValueDecorator(OUString(
"NO"));
1304 aCurrentRow[18] =
new ORowSetValueDecorator(OUString(
"YES"));
1307 aResults.push_back(aCurrentRow);
1311 pResultSet->setRows( std::move(aResults) );
1319 const OUString& tableNamePattern,
1322 SAL_INFO(
"connectivity.firebird",
"getTables() with "
1323 "TableNamePattern: " << tableNamePattern);
1327 uno::Reference< XStatement > statement =
m_pConnection->createStatement();
1329 static const char wld[] =
"%";
1330 OUStringBuffer queryBuf(
1332 "RDB$RELATION_NAME, "
1334 "RDB$RELATION_TYPE, "
1337 "FROM RDB$RELATIONS "
1341 if (!types.hasElements() || (types.getLength() == 1 && types[0].match(wld)))
1346 queryBuf.append(
"(RDB$RELATION_TYPE = 0 OR RDB$RELATION_TYPE = 1 OR RDB$RELATION_TYPE = 2) ");
1350 queryBuf.append(
"( (0 = 1) ");
1351 for (OUString
const & t : types)
1353 if (t ==
"SYSTEM TABLE")
1354 queryBuf.append(
"OR (RDB$SYSTEM_FLAG = 1 AND RDB$VIEW_BLR IS NULL) ");
1355 else if (t ==
"TABLE")
1356 queryBuf.append(
"OR (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_BLR IS NULL) ");
1357 else if (t ==
"VIEW")
1358 queryBuf.append(
"OR (RDB$SYSTEM_FLAG IS NULL OR RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_BLR IS NOT NULL) ");
1360 throw SQLException();
1362 queryBuf.append(
") ");
1365 if (!tableNamePattern.isEmpty())
1368 if (tableNamePattern.match(wld))
1369 sAppend =
"AND RDB$RELATION_NAME LIKE '%' ";
1371 sAppend =
"AND RDB$RELATION_NAME = '%' ";
1373 queryBuf.append(sAppend.replaceAll(wld, tableNamePattern));
1376 queryBuf.append(
" ORDER BY RDB$RELATION_TYPE, RDB$RELATION_NAME");
1378 OUString
query = queryBuf.makeStringAndClear();
1380 uno::Reference< XResultSet > rs = statement->executeQuery(query);
1381 uno::Reference< XRow > xRow( rs, UNO_QUERY_THROW );
1385 aCurrentRow[0] =
new ORowSetValueDecorator();
1386 aCurrentRow[1] =
new ORowSetValueDecorator();
1387 aCurrentRow[2] =
new ORowSetValueDecorator();
1396 sal_Int16 nSystemFlag = xRow->getShort(2);
1397 sal_Int16 nTableType = xRow->getShort(3);
1399 bool aIsView = !xRow->wasNull();
1400 OUString sTableType;
1402 if (nSystemFlag == 1)
1404 sTableType =
"SYSTEM TABLE";
1408 sTableType =
"VIEW";
1413 if (nTableType == 0 || nTableType == 2)
1414 sTableType =
"TABLE";
1417 aCurrentRow[4] =
new ORowSetValueDecorator(sTableType);
1421 uno::Reference< XClob > xClob = xRow->getClob(4);
1424 aCurrentRow[5] =
new ORowSetValueDecorator(xClob->getSubString(1, xClob->length()));
1428 aResults.push_back(aCurrentRow);
1431 pResultSet->setRows( std::move(aResults) );
1437 const Any&,
const OUString&,
1438 const OUString&,
const OUString& )
1440 SAL_WARN(
"connectivity.firebird",
"Not yet implemented");
1441 OSL_FAIL(
"Not implemented yet!");
1447 const Any&,
const OUString&,
1450 SAL_WARN(
"connectivity.firebird",
"Not yet implemented");
1451 OSL_FAIL(
"Not implemented yet!");
1457 const Any&,
const OUString&,
const OUString& )
1459 SAL_WARN(
"connectivity.firebird",
"Not yet implemented");
1460 OSL_FAIL(
"Not implemented yet!");
1466 const Any&,
const OUString&,
const OUString& table )
1472 const Any&,
const OUString&,
const OUString& table )
1482 uno::Reference< XStatement > statement =
m_pConnection->createStatement();
1484 OUString sSQL =
"SELECT "
1485 "RDB$REF_CONSTRAINTS.RDB$UPDATE_RULE, "
1486 "RDB$REF_CONSTRAINTS.RDB$DELETE_RULE, "
1487 "RDB$REF_CONSTRAINTS.RDB$CONST_NAME_UQ, "
1488 "RDB$REF_CONSTRAINTS.RDB$CONSTRAINT_NAME, "
1489 "PRIM.RDB$DEFERRABLE, "
1490 "PRIM.RDB$INITIALLY_DEFERRED, "
1491 "PRIM.RDB$RELATION_NAME, "
1492 "PRIMARY_INDEX.RDB$FIELD_NAME, "
1493 "PRIMARY_INDEX.RDB$FIELD_POSITION, "
1494 "FOREI.RDB$RELATION_NAME, "
1495 "FOREIGN_INDEX.RDB$FIELD_NAME "
1496 "FROM RDB$REF_CONSTRAINTS "
1497 "INNER JOIN RDB$RELATION_CONSTRAINTS AS PRIM "
1498 "ON RDB$REF_CONSTRAINTS.RDB$CONST_NAME_UQ = PRIM.RDB$CONSTRAINT_NAME "
1499 "INNER JOIN RDB$RELATION_CONSTRAINTS AS FOREI "
1500 "ON RDB$REF_CONSTRAINTS.RDB$CONSTRAINT_NAME = FOREI.RDB$CONSTRAINT_NAME "
1501 "INNER JOIN RDB$INDEX_SEGMENTS AS PRIMARY_INDEX "
1502 "ON PRIM.RDB$INDEX_NAME = PRIMARY_INDEX.RDB$INDEX_NAME "
1503 "INNER JOIN RDB$INDEX_SEGMENTS AS FOREIGN_INDEX "
1504 "ON FOREI.RDB$INDEX_NAME = FOREIGN_INDEX.RDB$INDEX_NAME "
1505 "WHERE FOREI.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY' ";
1507 sSQL += OUString::Concat(
"AND FOREI.RDB$RELATION_NAME = '")+
table +
"'";
1509 sSQL += OUString::Concat(
"AND PRIM.RDB$RELATION_NAME = '")+
table +
"'";
1511 uno::Reference< XResultSet > rs = statement->executeQuery(sSQL);
1512 uno::Reference< XRow > xRow( rs, UNO_QUERY_THROW );
1524 std::map< OUString,sal_Int32> aRuleMap;
1525 aRuleMap[ OUString(
"CASCADE")] = KeyRule::CASCADE;
1526 aRuleMap[ OUString(
"RESTRICT")] = KeyRule::RESTRICT;
1527 aRuleMap[ OUString(
"SET NULL")] = KeyRule::SET_NULL;
1528 aRuleMap[ OUString(
"SET DEFAULT")] = KeyRule::SET_DEFAULT;
1529 aRuleMap[ OUString(
"NO ACTION")] = KeyRule::NO_ACTION;
1556 aResults.push_back(aCurrentRow);
1559 pResultSet->setRows( std::move(aResults) );
1566 const OUString& sTable)
1568 SAL_INFO(
"connectivity.firebird",
"getPrimaryKeys() with "
1569 "Table: " << sTable);
1571 OUString sAppend =
"WHERE constr.RDB$RELATION_NAME = '%' ";
1572 OUString sQuery =
"SELECT "
1573 "constr.RDB$RELATION_NAME, "
1574 "inds.RDB$FIELD_NAME, "
1575 "inds.RDB$FIELD_POSITION, "
1576 "constr.RDB$CONSTRAINT_NAME "
1577 "FROM RDB$RELATION_CONSTRAINTS constr "
1578 "JOIN RDB$INDEX_SEGMENTS inds "
1579 "on (constr.RDB$INDEX_NAME = inds.RDB$INDEX_NAME) " +
1580 sAppend.replaceAll(
"%", sTable) +
1581 "AND constr.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' "
1582 "ORDER BY inds.RDB$FIELD_NAME";
1584 uno::Reference< XStatement > xStatement =
m_pConnection->createStatement();
1585 uno::Reference< XResultSet > xRs = xStatement->executeQuery(sQuery);
1586 uno::Reference< XRow > xRow( xRs, UNO_QUERY_THROW );
1598 if (xRs->getRow() == 1)
1609 aResults.push_back(aCurrentRow);
1613 pResultSet->setRows( std::move(aResults) );
1621 const OUString& sTable,
1629 SAL_INFO(
"connectivity.firebird",
"getPrimaryKeys() with "
1630 "Table: " << sTable);
1632 OUStringBuffer aQueryBuf(
"SELECT "
1633 "indices.RDB$RELATION_NAME, "
1634 "index_segments.RDB$FIELD_NAME, "
1635 "index_segments.RDB$FIELD_POSITION, "
1636 "indices.RDB$INDEX_NAME, "
1637 "indices.RDB$UNIQUE_FLAG, "
1638 "indices.RDB$INDEX_TYPE "
1639 "FROM RDB$INDICES indices "
1640 "JOIN RDB$INDEX_SEGMENTS index_segments "
1641 "on (indices.RDB$INDEX_NAME = index_segments.RDB$INDEX_NAME) "
1642 "WHERE indices.RDB$RELATION_NAME = '" + sTable +
"' "
1643 "AND (indices.RDB$SYSTEM_FLAG = 0) ");
1651 aQueryBuf.append(
"AND (indices.RDB$UNIQUE_FLAG = 1) ");
1653 OUString sQuery = aQueryBuf.makeStringAndClear();
1655 uno::Reference< XStatement > xStatement =
m_pConnection->createStatement();
1656 uno::Reference< XResultSet > xRs = xStatement->executeQuery(sQuery);
1657 uno::Reference< XRow > xRow( xRs, UNO_QUERY_THROW );
1662 aCurrentRow[0] =
new ORowSetValueDecorator();
1663 aCurrentRow[1] =
new ORowSetValueDecorator();
1664 aCurrentRow[2] =
new ORowSetValueDecorator();
1665 aCurrentRow[5] =
new ORowSetValueDecorator();
1671 aCurrentRow[7] =
new ORowSetValueDecorator(IndexType::OTHER);
1672 aCurrentRow[13] =
new ORowSetValueDecorator();
1677 if (xRs->getRow() == 1)
1683 aCurrentRow[4] =
new ORowSetValueDecorator(ORowSetValue(xRow->getShort(5) == 0));
1688 aCurrentRow[8] =
new ORowSetValueDecorator(xRow->getShort(3));
1692 if (xRow->getShort(6) == 1)
1693 aCurrentRow[10] =
new ORowSetValueDecorator(OUString(
"D"));
1695 aCurrentRow[10] =
new ORowSetValueDecorator(OUString(
"A"));
1698 aCurrentRow[11] =
new ORowSetValueDecorator(sal_Int32(0));
1700 aCurrentRow[12] =
new ORowSetValueDecorator(sal_Int32(0));
1702 aResults.push_back(aCurrentRow);
1706 pResultSet->setRows( std::move(aResults) );
1712 const Any&,
const OUString&,
const OUString&, sal_Int32,
1715 OSL_FAIL(
"Not implemented yet!");
1723 const OUString& sTableNamePattern)
1725 SAL_INFO(
"connectivity.firebird",
"getTablePrivileges() with "
1726 "TableNamePattern: " << sTableNamePattern);
1730 uno::Reference< XStatement > statement =
m_pConnection->createStatement();
1734 static const char wld[] =
"%";
1735 OUStringBuffer queryBuf(
1737 "priv.RDB$RELATION_NAME, "
1740 "priv.RDB$PRIVILEGE, "
1741 "priv.RDB$GRANT_OPTION "
1742 "FROM RDB$USER_PRIVILEGES priv ");
1744 if (!sTableNamePattern.isEmpty())
1747 if (sTableNamePattern.match(wld))
1748 sAppend =
"WHERE priv.RDB$RELATION_NAME LIKE '%' ";
1750 sAppend =
"WHERE priv.RDB$RELATION_NAME = '%' ";
1752 queryBuf.append(sAppend.replaceAll(wld, sTableNamePattern));
1754 queryBuf.append(
" ORDER BY priv.RDB$RELATION_TYPE, "
1755 "priv.RDB$RELATION_NAME, "
1756 "priv.RDB$PRIVILEGE");
1758 OUString
query = queryBuf.makeStringAndClear();
1760 uno::Reference< XResultSet > rs = statement->executeQuery(query);
1761 uno::Reference< XRow > xRow( rs, UNO_QUERY_THROW );
1765 aRow[0] =
new ORowSetValueDecorator();
1766 aRow[1] =
new ORowSetValueDecorator();
1767 aRow[2] =
new ORowSetValueDecorator();
1775 aRow[6] =
new ORowSetValueDecorator(xRow->getString(4));
1776 aRow[7] =
new ORowSetValueDecorator(ORowSetValue(
bool(xRow->getBoolean(5))));
1778 aResults.push_back(aRow);
1781 pResultSet->setRows( std::move(aResults) );
1787 const Any&,
const OUString&,
1788 const OUString&,
const Any&,
1789 const OUString&,
const OUString& )
1791 OSL_FAIL(
"Not implemented yet!");
1798 OSL_FAIL(
"Not implemented yet!");
ORowSetValueDecorator decorates an ORowSetValue so the value is "refcounted".
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
short getFBTypeFromBlrType(short blrType)
Internally (i.e.
OUString sanitizeIdentifier(std::u16string_view rIdentifier)
Make sure an identifier is safe to use within the database.
store_handle_type *SAL_CALL query(OStoreObject *pHandle, store_handle_type *)