1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 package com.sun.star.sdbcx.comp.postgresql; 23 24 import java.util.ArrayList; 25 26 import org.apache.openoffice.comp.sdbc.dbtools.util.ORowSetValue; 27 28 import com.sun.star.lib.uno.helper.WeakBase; 29 import com.sun.star.sdbc.DataType; 30 import com.sun.star.sdbc.SQLException; 31 import com.sun.star.sdbc.XConnection; 32 import com.sun.star.sdbc.XDatabaseMetaData; 33 import com.sun.star.sdbc.XResultSet; 34 import com.sun.star.sdbc.XRow; 35 import com.sun.star.uno.UnoRuntime; 36 37 public class PostgresqlDatabaseMetadata extends WeakBase implements XDatabaseMetaData { 38 private XDatabaseMetaData impl; 39 private XConnection connection; 40 private String url; 41 PostgresqlDatabaseMetadata(XDatabaseMetaData impl, XConnection connection, String url)42 public PostgresqlDatabaseMetadata(XDatabaseMetaData impl, XConnection connection, String url) { 43 this.impl = impl; 44 this.connection = connection; 45 this.url = url; 46 } 47 allProceduresAreCallable()48 public boolean allProceduresAreCallable() throws SQLException { 49 return impl.allProceduresAreCallable(); 50 } 51 allTablesAreSelectable()52 public boolean allTablesAreSelectable() throws SQLException { 53 return impl.allTablesAreSelectable(); 54 } 55 dataDefinitionCausesTransactionCommit()56 public boolean dataDefinitionCausesTransactionCommit() throws SQLException { 57 return impl.dataDefinitionCausesTransactionCommit(); 58 } 59 dataDefinitionIgnoredInTransactions()60 public boolean dataDefinitionIgnoredInTransactions() throws SQLException { 61 return impl.dataDefinitionIgnoredInTransactions(); 62 } 63 deletesAreDetected(int arg0)64 public boolean deletesAreDetected(int arg0) throws SQLException { 65 return impl.deletesAreDetected(arg0); 66 } 67 doesMaxRowSizeIncludeBlobs()68 public boolean doesMaxRowSizeIncludeBlobs() throws SQLException { 69 return impl.doesMaxRowSizeIncludeBlobs(); 70 } 71 getBestRowIdentifier(Object arg0, String arg1, String arg2, int arg3, boolean arg4)72 public XResultSet getBestRowIdentifier(Object arg0, String arg1, String arg2, int arg3, boolean arg4) throws SQLException { 73 return new PostgresqlResultSet(impl.getBestRowIdentifier(arg0, arg1, arg2, arg3, arg4), null); 74 } 75 getCatalogSeparator()76 public String getCatalogSeparator() throws SQLException { 77 return impl.getCatalogSeparator(); 78 } 79 getCatalogTerm()80 public String getCatalogTerm() throws SQLException { 81 return impl.getCatalogTerm(); 82 } 83 getCatalogs()84 public XResultSet getCatalogs() throws SQLException { 85 return new PostgresqlResultSet(impl.getCatalogs(), null); 86 } 87 getColumnPrivileges(Object arg0, String arg1, String arg2, String arg3)88 public XResultSet getColumnPrivileges(Object arg0, String arg1, String arg2, String arg3) throws SQLException { 89 return new PostgresqlResultSet(impl.getColumnPrivileges(arg0, arg1, arg2, arg3), null); 90 } 91 getColumns(Object arg0, String arg1, String arg2, String arg3)92 public XResultSet getColumns(Object arg0, String arg1, String arg2, String arg3) throws SQLException { 93 XResultSet results = impl.getColumns(arg0, arg1, arg2, arg3); 94 XRow row = UnoRuntime.queryInterface(XRow.class, results); 95 ArrayList<ORowSetValue[]> table = new ArrayList<>(); 96 while (results.next()) { 97 String tableCat = row.getString(1); 98 String tableSchem = row.getString(2); 99 String tableName = row.getString(3); 100 String columnName = row.getString(4); 101 short dataType = row.getShort(5); 102 String typeName = row.getString(6); 103 int columnSize = row.getInt(7); 104 int bufferLength = row.getInt(8); // FIXME: is it int? 105 int decimalDigits = row.getInt(9); 106 int numPrecRadix = row.getInt(10); 107 int nullable = row.getInt(11); 108 String remarks = row.getString(12); 109 String columnDef = row.getString(13); 110 int sqlDataType = row.getInt(14); 111 int sqlDateTimeSub = row.getInt(15); 112 int charOctetLength = row.getInt(16); 113 int ordinalPosition = row.getInt(17); 114 String isNullable = row.getString(18); 115 116 if (dataType == DataType.BIT) { 117 if (typeName.equals("bool")) { 118 dataType = DataType.BOOLEAN; 119 } 120 } 121 122 ORowSetValue[] rowOut = new ORowSetValue[18]; 123 rowOut[0] = new ORowSetValue(tableCat); 124 rowOut[1] = new ORowSetValue(tableSchem); 125 rowOut[2] = new ORowSetValue(tableName); 126 rowOut[3] = new ORowSetValue(columnName); 127 rowOut[4] = new ORowSetValue(dataType); 128 rowOut[5] = new ORowSetValue(typeName); 129 rowOut[6] = new ORowSetValue(columnSize); 130 rowOut[7] = new ORowSetValue(bufferLength); 131 rowOut[8] = new ORowSetValue(decimalDigits); 132 rowOut[9] = new ORowSetValue(numPrecRadix); 133 rowOut[10] = new ORowSetValue(nullable); 134 rowOut[11] = new ORowSetValue(remarks); 135 rowOut[12] = new ORowSetValue(columnDef); 136 rowOut[13] = new ORowSetValue(sqlDataType); 137 rowOut[14] = new ORowSetValue(sqlDateTimeSub); 138 rowOut[15] = new ORowSetValue(charOctetLength); 139 rowOut[16] = new ORowSetValue(ordinalPosition); 140 rowOut[17] = new ORowSetValue(isNullable); 141 table.add(rowOut); 142 } 143 return new PostgresqlDatabaseMetaDataResultSet(results, table); 144 } 145 getConnection()146 public XConnection getConnection() throws SQLException { 147 return connection; 148 } 149 getCrossReference(Object arg0, String arg1, String arg2, Object arg3, String arg4, String arg5)150 public XResultSet getCrossReference(Object arg0, String arg1, String arg2, Object arg3, String arg4, String arg5) throws SQLException { 151 return new PostgresqlResultSet(impl.getCrossReference(arg0, arg1, arg2, arg3, arg4, arg5), null); 152 } 153 getDatabaseProductName()154 public String getDatabaseProductName() throws SQLException { 155 return impl.getDatabaseProductName(); 156 } 157 getDatabaseProductVersion()158 public String getDatabaseProductVersion() throws SQLException { 159 return impl.getDatabaseProductVersion(); 160 } 161 getDefaultTransactionIsolation()162 public int getDefaultTransactionIsolation() throws SQLException { 163 return impl.getDefaultTransactionIsolation(); 164 } 165 getDriverMajorVersion()166 public int getDriverMajorVersion() { 167 return impl.getDriverMajorVersion(); 168 } 169 getDriverMinorVersion()170 public int getDriverMinorVersion() { 171 return impl.getDriverMinorVersion(); 172 } 173 getDriverName()174 public String getDriverName() throws SQLException { 175 return impl.getDriverName(); 176 } 177 getDriverVersion()178 public String getDriverVersion() throws SQLException { 179 return impl.getDriverVersion(); 180 } 181 getExportedKeys(Object arg0, String arg1, String arg2)182 public XResultSet getExportedKeys(Object arg0, String arg1, String arg2) throws SQLException { 183 return new PostgresqlResultSet(impl.getExportedKeys(arg0, arg1, arg2), null); 184 } 185 getExtraNameCharacters()186 public String getExtraNameCharacters() throws SQLException { 187 return impl.getExtraNameCharacters(); 188 } 189 getIdentifierQuoteString()190 public String getIdentifierQuoteString() throws SQLException { 191 return impl.getIdentifierQuoteString(); 192 } 193 getImportedKeys(Object arg0, String arg1, String arg2)194 public XResultSet getImportedKeys(Object arg0, String arg1, String arg2) throws SQLException { 195 return new PostgresqlResultSet(impl.getImportedKeys(arg0, arg1, arg2), null); 196 } 197 getIndexInfo(Object arg0, String arg1, String arg2, boolean arg3, boolean arg4)198 public XResultSet getIndexInfo(Object arg0, String arg1, String arg2, boolean arg3, boolean arg4) throws SQLException { 199 return new PostgresqlResultSet(impl.getIndexInfo(arg0, arg1, arg2, arg3, arg4), null); 200 } 201 getMaxBinaryLiteralLength()202 public int getMaxBinaryLiteralLength() throws SQLException { 203 return impl.getMaxBinaryLiteralLength(); 204 } 205 getMaxCatalogNameLength()206 public int getMaxCatalogNameLength() throws SQLException { 207 return impl.getMaxCatalogNameLength(); 208 } 209 getMaxCharLiteralLength()210 public int getMaxCharLiteralLength() throws SQLException { 211 return impl.getMaxCharLiteralLength(); 212 } 213 getMaxColumnNameLength()214 public int getMaxColumnNameLength() throws SQLException { 215 return impl.getMaxColumnNameLength(); 216 } 217 getMaxColumnsInGroupBy()218 public int getMaxColumnsInGroupBy() throws SQLException { 219 return impl.getMaxColumnsInGroupBy(); 220 } 221 getMaxColumnsInIndex()222 public int getMaxColumnsInIndex() throws SQLException { 223 return impl.getMaxColumnsInIndex(); 224 } 225 getMaxColumnsInOrderBy()226 public int getMaxColumnsInOrderBy() throws SQLException { 227 return impl.getMaxColumnsInOrderBy(); 228 } 229 getMaxColumnsInSelect()230 public int getMaxColumnsInSelect() throws SQLException { 231 return impl.getMaxColumnsInSelect(); 232 } 233 getMaxColumnsInTable()234 public int getMaxColumnsInTable() throws SQLException { 235 return impl.getMaxColumnsInTable(); 236 } 237 getMaxConnections()238 public int getMaxConnections() throws SQLException { 239 return impl.getMaxConnections(); 240 } 241 getMaxCursorNameLength()242 public int getMaxCursorNameLength() throws SQLException { 243 return impl.getMaxCursorNameLength(); 244 } 245 getMaxIndexLength()246 public int getMaxIndexLength() throws SQLException { 247 return impl.getMaxIndexLength(); 248 } 249 getMaxProcedureNameLength()250 public int getMaxProcedureNameLength() throws SQLException { 251 return impl.getMaxProcedureNameLength(); 252 } 253 getMaxRowSize()254 public int getMaxRowSize() throws SQLException { 255 return impl.getMaxRowSize(); 256 } 257 getMaxSchemaNameLength()258 public int getMaxSchemaNameLength() throws SQLException { 259 return impl.getMaxSchemaNameLength(); 260 } 261 getMaxStatementLength()262 public int getMaxStatementLength() throws SQLException { 263 return impl.getMaxStatementLength(); 264 } 265 getMaxStatements()266 public int getMaxStatements() throws SQLException { 267 return impl.getMaxStatements(); 268 } 269 getMaxTableNameLength()270 public int getMaxTableNameLength() throws SQLException { 271 return impl.getMaxTableNameLength(); 272 } 273 getMaxTablesInSelect()274 public int getMaxTablesInSelect() throws SQLException { 275 return impl.getMaxTablesInSelect(); 276 } 277 getMaxUserNameLength()278 public int getMaxUserNameLength() throws SQLException { 279 return impl.getMaxUserNameLength(); 280 } 281 getNumericFunctions()282 public String getNumericFunctions() throws SQLException { 283 return impl.getNumericFunctions(); 284 } 285 getPrimaryKeys(Object arg0, String arg1, String arg2)286 public XResultSet getPrimaryKeys(Object arg0, String arg1, String arg2) throws SQLException { 287 return new PostgresqlResultSet(impl.getPrimaryKeys(arg0, arg1, arg2), null); 288 } 289 getProcedureColumns(Object arg0, String arg1, String arg2, String arg3)290 public XResultSet getProcedureColumns(Object arg0, String arg1, String arg2, String arg3) throws SQLException { 291 return new PostgresqlResultSet(impl.getProcedureColumns(arg0, arg1, arg2, arg3), null); 292 } 293 getProcedureTerm()294 public String getProcedureTerm() throws SQLException { 295 return impl.getProcedureTerm(); 296 } 297 getProcedures(Object arg0, String arg1, String arg2)298 public XResultSet getProcedures(Object arg0, String arg1, String arg2) throws SQLException { 299 return new PostgresqlResultSet(impl.getProcedures(arg0, arg1, arg2), null); 300 } 301 getSQLKeywords()302 public String getSQLKeywords() throws SQLException { 303 return impl.getSQLKeywords(); 304 } 305 getSchemaTerm()306 public String getSchemaTerm() throws SQLException { 307 return impl.getSchemaTerm(); 308 } 309 getSchemas()310 public XResultSet getSchemas() throws SQLException { 311 return new PostgresqlResultSet(impl.getSchemas(), null); 312 } 313 getSearchStringEscape()314 public String getSearchStringEscape() throws SQLException { 315 return impl.getSearchStringEscape(); 316 } 317 getStringFunctions()318 public String getStringFunctions() throws SQLException { 319 return impl.getStringFunctions(); 320 } 321 getSystemFunctions()322 public String getSystemFunctions() throws SQLException { 323 return impl.getSystemFunctions(); 324 } 325 getTablePrivileges(Object arg0, String arg1, String arg2)326 public XResultSet getTablePrivileges(Object arg0, String arg1, String arg2) throws SQLException { 327 return new PostgresqlResultSet(impl.getTablePrivileges(arg0, arg1, arg2), null); 328 } 329 getTableTypes()330 public XResultSet getTableTypes() throws SQLException { 331 return new PostgresqlResultSet(impl.getTableTypes(), null); 332 } 333 getTables(Object arg0, String arg1, String arg2, String[] arg3)334 public XResultSet getTables(Object arg0, String arg1, String arg2, String[] arg3) throws SQLException { 335 return new PostgresqlResultSet(impl.getTables(arg0, arg1, arg2, arg3), null); 336 } 337 getTimeDateFunctions()338 public String getTimeDateFunctions() throws SQLException { 339 return impl.getTimeDateFunctions(); 340 } 341 getTypeInfo()342 public XResultSet getTypeInfo() throws SQLException { 343 XResultSet results = impl.getTypeInfo(); 344 XRow row = UnoRuntime.queryInterface(XRow.class, results); 345 ArrayList<ORowSetValue[]> table = new ArrayList<>(); 346 while (results.next()) { 347 String typeName = row.getString(1); 348 short dataType = row.getShort(2); 349 int precision = row.getInt(3); 350 String literalPrefix = row.getString(4); 351 String literalSuffix = row.getString(5); 352 String createParams = row.getString(6); 353 short nullable = row.getShort(7); 354 boolean caseSensitive = row.getBoolean(8); 355 short searchable = row.getShort(9); 356 boolean unsignedAttribute = row.getBoolean(10); 357 boolean fixedPrecScale = row.getBoolean(11); 358 boolean autoIncrement = row.getBoolean(12); 359 String localTypeName = row.getString(13); 360 short minimumScale = row.getShort(14); 361 short maximumScale = row.getShort(15); 362 int sqlDataType = row.getInt(16); 363 int sqlDateTimeSub = row.getInt(17); 364 int numPrecRadix = row.getInt(18); 365 366 if (dataType == DataType.BIT) { 367 if (typeName.equals("bit")) { 368 // but the editor sees multi-bit columns as single bit 369 // and single bit can't be edited either: syntax error 370 createParams = "length"; 371 } else if (typeName.equals("bool")) { 372 dataType = DataType.BOOLEAN; 373 } 374 } 375 if ((dataType == DataType.CHAR || dataType == DataType.VARCHAR)) { 376 precision = 10485760; 377 createParams = "length"; 378 } 379 380 ORowSetValue[] rowOut = new ORowSetValue[18]; 381 rowOut[0] = new ORowSetValue(typeName); 382 rowOut[1] = new ORowSetValue(dataType); 383 rowOut[2] = new ORowSetValue(precision); 384 rowOut[3] = new ORowSetValue(literalPrefix); 385 rowOut[4] = new ORowSetValue(literalSuffix); 386 rowOut[5] = new ORowSetValue(createParams); 387 rowOut[6] = new ORowSetValue(nullable); 388 rowOut[7] = new ORowSetValue(caseSensitive); 389 rowOut[8] = new ORowSetValue(searchable); 390 rowOut[9] = new ORowSetValue(unsignedAttribute); 391 rowOut[10] = new ORowSetValue(fixedPrecScale); 392 rowOut[11] = new ORowSetValue(autoIncrement); 393 rowOut[12] = new ORowSetValue(localTypeName); 394 rowOut[13] = new ORowSetValue(minimumScale); 395 rowOut[14] = new ORowSetValue(maximumScale); 396 rowOut[15] = new ORowSetValue(sqlDataType); 397 rowOut[16] = new ORowSetValue(sqlDateTimeSub); 398 rowOut[17] = new ORowSetValue(numPrecRadix); 399 table.add(rowOut); 400 //System.out.println(String.format("type %s, data type %d, SQL type %d, precision %d, createParams %s", typeName, dataType, sqlDataType, precision, createParams)); 401 } 402 return new PostgresqlDatabaseMetaDataResultSet(results, table); 403 } 404 getUDTs(Object arg0, String arg1, String arg2, int[] arg3)405 public XResultSet getUDTs(Object arg0, String arg1, String arg2, int[] arg3) throws SQLException { 406 return new PostgresqlResultSet(impl.getUDTs(arg0, arg1, arg2, arg3), null); 407 } 408 getURL()409 public String getURL() throws SQLException { 410 return url; 411 } 412 getUserName()413 public String getUserName() throws SQLException { 414 return impl.getUserName(); 415 } 416 getVersionColumns(Object arg0, String arg1, String arg2)417 public XResultSet getVersionColumns(Object arg0, String arg1, String arg2) throws SQLException { 418 return new PostgresqlResultSet(impl.getVersionColumns(arg0, arg1, arg2), null); 419 } 420 insertsAreDetected(int arg0)421 public boolean insertsAreDetected(int arg0) throws SQLException { 422 return impl.insertsAreDetected(arg0); 423 } 424 isCatalogAtStart()425 public boolean isCatalogAtStart() throws SQLException { 426 return impl.isCatalogAtStart(); 427 } 428 isReadOnly()429 public boolean isReadOnly() throws SQLException { 430 return impl.isReadOnly(); 431 } 432 nullPlusNonNullIsNull()433 public boolean nullPlusNonNullIsNull() throws SQLException { 434 return impl.nullPlusNonNullIsNull(); 435 } 436 nullsAreSortedAtEnd()437 public boolean nullsAreSortedAtEnd() throws SQLException { 438 return impl.nullsAreSortedAtEnd(); 439 } 440 nullsAreSortedAtStart()441 public boolean nullsAreSortedAtStart() throws SQLException { 442 return impl.nullsAreSortedAtStart(); 443 } 444 nullsAreSortedHigh()445 public boolean nullsAreSortedHigh() throws SQLException { 446 return impl.nullsAreSortedHigh(); 447 } 448 nullsAreSortedLow()449 public boolean nullsAreSortedLow() throws SQLException { 450 return impl.nullsAreSortedLow(); 451 } 452 othersDeletesAreVisible(int arg0)453 public boolean othersDeletesAreVisible(int arg0) throws SQLException { 454 return impl.othersDeletesAreVisible(arg0); 455 } 456 othersInsertsAreVisible(int arg0)457 public boolean othersInsertsAreVisible(int arg0) throws SQLException { 458 return impl.othersInsertsAreVisible(arg0); 459 } 460 othersUpdatesAreVisible(int arg0)461 public boolean othersUpdatesAreVisible(int arg0) throws SQLException { 462 return impl.othersUpdatesAreVisible(arg0); 463 } 464 ownDeletesAreVisible(int arg0)465 public boolean ownDeletesAreVisible(int arg0) throws SQLException { 466 return impl.ownDeletesAreVisible(arg0); 467 } 468 ownInsertsAreVisible(int arg0)469 public boolean ownInsertsAreVisible(int arg0) throws SQLException { 470 return impl.ownInsertsAreVisible(arg0); 471 } 472 ownUpdatesAreVisible(int arg0)473 public boolean ownUpdatesAreVisible(int arg0) throws SQLException { 474 return impl.ownUpdatesAreVisible(arg0); 475 } 476 storesLowerCaseIdentifiers()477 public boolean storesLowerCaseIdentifiers() throws SQLException { 478 return impl.storesLowerCaseIdentifiers(); 479 } 480 storesLowerCaseQuotedIdentifiers()481 public boolean storesLowerCaseQuotedIdentifiers() throws SQLException { 482 return impl.storesLowerCaseQuotedIdentifiers(); 483 } 484 storesMixedCaseIdentifiers()485 public boolean storesMixedCaseIdentifiers() throws SQLException { 486 return impl.storesMixedCaseIdentifiers(); 487 } 488 storesMixedCaseQuotedIdentifiers()489 public boolean storesMixedCaseQuotedIdentifiers() throws SQLException { 490 return impl.storesMixedCaseQuotedIdentifiers(); 491 } 492 storesUpperCaseIdentifiers()493 public boolean storesUpperCaseIdentifiers() throws SQLException { 494 return impl.storesUpperCaseIdentifiers(); 495 } 496 storesUpperCaseQuotedIdentifiers()497 public boolean storesUpperCaseQuotedIdentifiers() throws SQLException { 498 return impl.storesUpperCaseQuotedIdentifiers(); 499 } 500 supportsANSI92EntryLevelSQL()501 public boolean supportsANSI92EntryLevelSQL() throws SQLException { 502 return impl.supportsANSI92EntryLevelSQL(); 503 } 504 supportsANSI92FullSQL()505 public boolean supportsANSI92FullSQL() throws SQLException { 506 return impl.supportsANSI92FullSQL(); 507 } 508 supportsANSI92IntermediateSQL()509 public boolean supportsANSI92IntermediateSQL() throws SQLException { 510 return impl.supportsANSI92IntermediateSQL(); 511 } 512 supportsAlterTableWithAddColumn()513 public boolean supportsAlterTableWithAddColumn() throws SQLException { 514 return impl.supportsAlterTableWithAddColumn(); 515 } 516 supportsAlterTableWithDropColumn()517 public boolean supportsAlterTableWithDropColumn() throws SQLException { 518 return impl.supportsAlterTableWithDropColumn(); 519 } 520 supportsBatchUpdates()521 public boolean supportsBatchUpdates() throws SQLException { 522 return impl.supportsBatchUpdates(); 523 } 524 supportsCatalogsInDataManipulation()525 public boolean supportsCatalogsInDataManipulation() throws SQLException { 526 return impl.supportsCatalogsInDataManipulation(); 527 } 528 supportsCatalogsInIndexDefinitions()529 public boolean supportsCatalogsInIndexDefinitions() throws SQLException { 530 return impl.supportsCatalogsInIndexDefinitions(); 531 } 532 supportsCatalogsInPrivilegeDefinitions()533 public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException { 534 return impl.supportsCatalogsInPrivilegeDefinitions(); 535 } 536 supportsCatalogsInProcedureCalls()537 public boolean supportsCatalogsInProcedureCalls() throws SQLException { 538 return impl.supportsCatalogsInProcedureCalls(); 539 } 540 supportsCatalogsInTableDefinitions()541 public boolean supportsCatalogsInTableDefinitions() throws SQLException { 542 return impl.supportsCatalogsInTableDefinitions(); 543 } 544 supportsColumnAliasing()545 public boolean supportsColumnAliasing() throws SQLException { 546 return impl.supportsColumnAliasing(); 547 } 548 supportsConvert(int arg0, int arg1)549 public boolean supportsConvert(int arg0, int arg1) throws SQLException { 550 return impl.supportsConvert(arg0, arg1); 551 } 552 supportsCoreSQLGrammar()553 public boolean supportsCoreSQLGrammar() throws SQLException { 554 return impl.supportsCoreSQLGrammar(); 555 } 556 supportsCorrelatedSubqueries()557 public boolean supportsCorrelatedSubqueries() throws SQLException { 558 return impl.supportsCorrelatedSubqueries(); 559 } 560 supportsDataDefinitionAndDataManipulationTransactions()561 public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException { 562 return impl.supportsDataDefinitionAndDataManipulationTransactions(); 563 } 564 supportsDataManipulationTransactionsOnly()565 public boolean supportsDataManipulationTransactionsOnly() throws SQLException { 566 return impl.supportsDataManipulationTransactionsOnly(); 567 } 568 supportsDifferentTableCorrelationNames()569 public boolean supportsDifferentTableCorrelationNames() throws SQLException { 570 return impl.supportsDifferentTableCorrelationNames(); 571 } 572 supportsExpressionsInOrderBy()573 public boolean supportsExpressionsInOrderBy() throws SQLException { 574 return impl.supportsExpressionsInOrderBy(); 575 } 576 supportsExtendedSQLGrammar()577 public boolean supportsExtendedSQLGrammar() throws SQLException { 578 return impl.supportsExtendedSQLGrammar(); 579 } 580 supportsFullOuterJoins()581 public boolean supportsFullOuterJoins() throws SQLException { 582 return impl.supportsFullOuterJoins(); 583 } 584 supportsGroupBy()585 public boolean supportsGroupBy() throws SQLException { 586 return impl.supportsGroupBy(); 587 } 588 supportsGroupByBeyondSelect()589 public boolean supportsGroupByBeyondSelect() throws SQLException { 590 return impl.supportsGroupByBeyondSelect(); 591 } 592 supportsGroupByUnrelated()593 public boolean supportsGroupByUnrelated() throws SQLException { 594 return impl.supportsGroupByUnrelated(); 595 } 596 supportsIntegrityEnhancementFacility()597 public boolean supportsIntegrityEnhancementFacility() throws SQLException { 598 return impl.supportsIntegrityEnhancementFacility(); 599 } 600 supportsLikeEscapeClause()601 public boolean supportsLikeEscapeClause() throws SQLException { 602 return impl.supportsLikeEscapeClause(); 603 } 604 supportsLimitedOuterJoins()605 public boolean supportsLimitedOuterJoins() throws SQLException { 606 return impl.supportsLimitedOuterJoins(); 607 } 608 supportsMinimumSQLGrammar()609 public boolean supportsMinimumSQLGrammar() throws SQLException { 610 return impl.supportsMinimumSQLGrammar(); 611 } 612 supportsMixedCaseIdentifiers()613 public boolean supportsMixedCaseIdentifiers() throws SQLException { 614 return impl.supportsMixedCaseIdentifiers(); 615 } 616 supportsMixedCaseQuotedIdentifiers()617 public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException { 618 return impl.supportsMixedCaseQuotedIdentifiers(); 619 } 620 supportsMultipleResultSets()621 public boolean supportsMultipleResultSets() throws SQLException { 622 return impl.supportsMultipleResultSets(); 623 } 624 supportsMultipleTransactions()625 public boolean supportsMultipleTransactions() throws SQLException { 626 return impl.supportsMultipleTransactions(); 627 } 628 supportsNonNullableColumns()629 public boolean supportsNonNullableColumns() throws SQLException { 630 return impl.supportsNonNullableColumns(); 631 } 632 supportsOpenCursorsAcrossCommit()633 public boolean supportsOpenCursorsAcrossCommit() throws SQLException { 634 return impl.supportsOpenCursorsAcrossCommit(); 635 } 636 supportsOpenCursorsAcrossRollback()637 public boolean supportsOpenCursorsAcrossRollback() throws SQLException { 638 return impl.supportsOpenCursorsAcrossRollback(); 639 } 640 supportsOpenStatementsAcrossCommit()641 public boolean supportsOpenStatementsAcrossCommit() throws SQLException { 642 return impl.supportsOpenStatementsAcrossCommit(); 643 } 644 supportsOpenStatementsAcrossRollback()645 public boolean supportsOpenStatementsAcrossRollback() throws SQLException { 646 return impl.supportsOpenStatementsAcrossRollback(); 647 } 648 supportsOrderByUnrelated()649 public boolean supportsOrderByUnrelated() throws SQLException { 650 return impl.supportsOrderByUnrelated(); 651 } 652 supportsOuterJoins()653 public boolean supportsOuterJoins() throws SQLException { 654 return impl.supportsOuterJoins(); 655 } 656 supportsPositionedDelete()657 public boolean supportsPositionedDelete() throws SQLException { 658 return impl.supportsPositionedDelete(); 659 } 660 supportsPositionedUpdate()661 public boolean supportsPositionedUpdate() throws SQLException { 662 return impl.supportsPositionedUpdate(); 663 } 664 supportsResultSetConcurrency(int arg0, int arg1)665 public boolean supportsResultSetConcurrency(int arg0, int arg1) throws SQLException { 666 return impl.supportsResultSetConcurrency(arg0, arg1); 667 } 668 supportsResultSetType(int arg0)669 public boolean supportsResultSetType(int arg0) throws SQLException { 670 return impl.supportsResultSetType(arg0); 671 } 672 supportsSchemasInDataManipulation()673 public boolean supportsSchemasInDataManipulation() throws SQLException { 674 return impl.supportsSchemasInDataManipulation(); 675 } 676 supportsSchemasInIndexDefinitions()677 public boolean supportsSchemasInIndexDefinitions() throws SQLException { 678 return impl.supportsSchemasInIndexDefinitions(); 679 } 680 supportsSchemasInPrivilegeDefinitions()681 public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException { 682 return impl.supportsSchemasInPrivilegeDefinitions(); 683 } 684 supportsSchemasInProcedureCalls()685 public boolean supportsSchemasInProcedureCalls() throws SQLException { 686 return impl.supportsSchemasInProcedureCalls(); 687 } 688 supportsSchemasInTableDefinitions()689 public boolean supportsSchemasInTableDefinitions() throws SQLException { 690 return impl.supportsSchemasInTableDefinitions(); 691 } 692 supportsSelectForUpdate()693 public boolean supportsSelectForUpdate() throws SQLException { 694 return impl.supportsSelectForUpdate(); 695 } 696 supportsStoredProcedures()697 public boolean supportsStoredProcedures() throws SQLException { 698 return impl.supportsStoredProcedures(); 699 } 700 supportsSubqueriesInComparisons()701 public boolean supportsSubqueriesInComparisons() throws SQLException { 702 return impl.supportsSubqueriesInComparisons(); 703 } 704 supportsSubqueriesInExists()705 public boolean supportsSubqueriesInExists() throws SQLException { 706 return impl.supportsSubqueriesInExists(); 707 } 708 supportsSubqueriesInIns()709 public boolean supportsSubqueriesInIns() throws SQLException { 710 return impl.supportsSubqueriesInIns(); 711 } 712 supportsSubqueriesInQuantifieds()713 public boolean supportsSubqueriesInQuantifieds() throws SQLException { 714 return impl.supportsSubqueriesInQuantifieds(); 715 } 716 supportsTableCorrelationNames()717 public boolean supportsTableCorrelationNames() throws SQLException { 718 return impl.supportsTableCorrelationNames(); 719 } 720 supportsTransactionIsolationLevel(int arg0)721 public boolean supportsTransactionIsolationLevel(int arg0) throws SQLException { 722 return impl.supportsTransactionIsolationLevel(arg0); 723 } 724 supportsTransactions()725 public boolean supportsTransactions() throws SQLException { 726 return impl.supportsTransactions(); 727 } 728 supportsTypeConversion()729 public boolean supportsTypeConversion() throws SQLException { 730 return impl.supportsTypeConversion(); 731 } 732 supportsUnion()733 public boolean supportsUnion() throws SQLException { 734 return impl.supportsUnion(); 735 } 736 supportsUnionAll()737 public boolean supportsUnionAll() throws SQLException { 738 return impl.supportsUnionAll(); 739 } 740 updatesAreDetected(int arg0)741 public boolean updatesAreDetected(int arg0) throws SQLException { 742 return impl.updatesAreDetected(arg0); 743 } 744 usesLocalFilePerTable()745 public boolean usesLocalFilePerTable() throws SQLException { 746 return impl.usesLocalFilePerTable(); 747 } 748 usesLocalFiles()749 public boolean usesLocalFiles() throws SQLException { 750 return impl.usesLocalFiles(); 751 } 752 } 753