1 package com.quadcap.jdbc; 2 3 40 41 import java.io.IOException ; 42 43 import java.sql.SQLException ; 44 45 import com.quadcap.sql.Database; 46 import com.quadcap.sql.Expression; 47 import com.quadcap.sql.Session; 48 import com.quadcap.sql.SQLParser; 49 import com.quadcap.sql.Version; 50 51 import com.quadcap.sql.types.ValuePattern; 52 53 import com.quadcap.sql.meta.MetaBestRowId; 54 import com.quadcap.sql.meta.MetaColumns; 55 import com.quadcap.sql.meta.MetaCrossReference; 56 import com.quadcap.sql.meta.MetaCursor; 57 import com.quadcap.sql.meta.MetaIndexInfo; 58 import com.quadcap.sql.meta.MetaPrimaryKeys; 59 import com.quadcap.sql.meta.MetaTableTypes; 60 import com.quadcap.sql.meta.MetaTables; 61 import com.quadcap.sql.meta.MetaTypes; 62 63 71 public class DatabaseMetaData implements java.sql.DatabaseMetaData { 72 Database database; 73 com.quadcap.sql.Connection qConn; 74 Session session; 75 Connection connection; 76 77 DatabaseMetaData(Connection connection) throws IOException , SQLException { 78 this.connection = connection; 79 this.qConn = connection.getConnection(); 80 this.session = qConn.createSession(); 81 this.database = connection.getDatabase(); 82 } 83 84 93 public boolean allProceduresAreCallable() { 94 return true; 95 } 96 97 105 public boolean allTablesAreSelectable() { 106 return true; 107 } 108 109 115 public boolean dataDefinitionCausesTransactionCommit() { 116 return false; 117 } 118 119 125 public boolean dataDefinitionIgnoredInTransactions() { 126 return false; 127 } 128 129 135 public boolean deletesAreDetected(int type) { 136 return false; 137 } 138 139 145 public boolean doesMaxRowSizeIncludeBlobs() { 146 return true; 147 } 148 149 157 public java.sql.ResultSet getBestRowIdentifier( 158 String catalog, String schema, String table, int scope, 159 boolean nullable) 160 throws SQLException 161 { 162 StringBuffer sb = new StringBuffer (); 163 if (schema != null && schema.trim().length() > 0) { 164 sb.append(schema.trim()); 165 sb.append('.'); 166 } 167 if (table != null) sb.append(table); 168 MetaBestRowId mt = new MetaBestRowId(session, sb.toString(), 169 scope, nullable); 170 return new ResultSet(mt); 171 } 172 173 178 public String getCatalogSeparator() { 179 return ""; 180 } 181 182 187 public String getCatalogTerm() { 188 return "catalog"; 189 } 190 191 195 public java.sql.ResultSet getCatalogs() 196 throws SQLException 197 { 198 return new ResultSet(MetaCursor.find(session, "SYSTEM.CATALOGS")); 199 } 200 201 205 public java.sql.ResultSet 206 getColumnPrivileges(String catalog, String schema, 207 String table, 208 String columnNamePattern) 209 throws SQLException 210 { 211 return new ResultSet(MetaCursor.find(session, 212 "SYSTEM.COLUMNPRIVILEGES")); 213 } 214 215 218 final void doPattern(StringBuffer sb, String name, String pattern) { 219 if (pattern != null) { 220 if (sb.length() > 0) { 221 sb.append(" and "); 222 } 223 sb.append(name); 224 sb.append(" like '"); 225 sb.append(pattern.toUpperCase()); 226 sb.append('\''); 227 } 228 } 229 230 233 final void doString(StringBuffer sb, String name, String val) { 234 if (val != null) { 235 if (sb.length() > 0) { 236 sb.append(" and "); 237 } 238 sb.append(name); 239 sb.append(" = '"); 240 sb.append(val.toUpperCase()); 241 sb.append('\''); 242 } 243 } 244 245 354 public java.sql.ResultSet 355 getColumns(String catalog, String schemaPattern, 356 String tableNamePattern, 357 String columnNamePattern) 358 throws SQLException 359 { 360 if (schemaPattern == null || schemaPattern.equals("")) { 361 schemaPattern = null; 362 } 363 StringBuffer sb = new StringBuffer (); 364 doPattern(sb, "TABLE_SCHEM", schemaPattern); 365 doPattern(sb, "TABLE_NAME", tableNamePattern); 366 doPattern(sb, "COLUMN_NAME", columnNamePattern); 367 Expression ex = parseExpression(sb.toString()); 368 MetaColumns mt = new MetaColumns(session, ex); 369 return new ResultSet(mt); 370 } 371 372 378 public java.sql.Connection getConnection() { 379 return connection; 380 } 381 382 490 public java.sql.ResultSet getCrossReference(String primaryCatalog, 491 String primarySchema, 492 String primaryTable, 493 String foreignCatalog, 494 String foreignSchema, 495 String foreignTable) 496 throws SQLException 497 { 498 StringBuffer sb = new StringBuffer (); 499 doString(sb, "PKTABLE_SCHEM", primarySchema); 500 doString(sb, "PKTABLE_NAME", primaryTable); 501 doString(sb, "FKTABLE_SCHEM", foreignSchema); 502 doString(sb, "FKTABLE_NAME", foreignTable); 503 Expression ex = parseExpression(sb.toString()); 504 MetaCrossReference mx = new MetaCrossReference(session, ex); 505 return new ResultSet(mx); 506 } 507 508 513 public String getDatabaseProductName() { 514 return "QED"; 515 } 516 517 527 public String getDatabaseProductVersion() { 528 return "" + getDriverMajorVersion() + "." + getDriverMinorVersion(); 529 } 530 531 538 public int getDefaultTransactionIsolation() { 539 return Connection.TRANSACTION_SERIALIZABLE; 540 } 541 542 547 public int getDriverMajorVersion() { 548 return Version.majorVersion; 549 } 550 551 556 public int getDriverMinorVersion() { return Version.minorVersion; } 557 558 563 public String getDriverName() { 564 return "com.quadcap.jdbc.JdbcDriver"; 565 } 566 567 577 public String getDriverVersion() 578 throws SQLException 579 { 580 return getDatabaseProductVersion(); 581 } 582 583 689 public java.sql.ResultSet getExportedKeys(String catalog, String schema, 690 String table) 691 throws SQLException 692 { 693 StringBuffer sb = new StringBuffer (""); 694 doString(sb, "PKTABLE_SCHEM", schema); 695 doString(sb, "PKTABLE_NAME", table); 696 Expression ex = parseExpression(sb.toString()); 697 MetaCrossReference mt = new MetaCrossReference(session, ex); 698 return new ResultSet(mt); 699 } 700 701 709 public String getExtraNameCharacters() { 710 return ""; 711 } 712 713 718 public String getIdentifierQuoteString() { 719 return "\""; 720 } 721 722 828 public java.sql.ResultSet getImportedKeys(String catalog, String schema, 829 String table) 830 throws SQLException 831 { 832 StringBuffer sb = new StringBuffer (""); 833 doString(sb, "FKTABLE_SCHEM", schema); 834 doString(sb, "FKTABLE_NAME", table); 835 Expression ex = parseExpression(sb.toString()); 836 MetaCrossReference mt = new MetaCrossReference(session, ex); 837 return new ResultSet(mt); 838 } 839 840 922 public java.sql.ResultSet getIndexInfo(String catalog, String schema, 923 String table, boolean unique, 924 boolean approximate) 925 throws SQLException 926 { 927 StringBuffer sb = new StringBuffer (""); 928 doString(sb, "TABLE_SCHEM", schema); 929 doString(sb, "TABLE_NAME", table); 930 if (unique) { 931 if (sb.length() > 0) sb.append(" and "); 932 sb.append("not NON_UNIQUE"); 933 } 934 Expression ex = parseExpression(sb.toString()); 935 MetaIndexInfo mi = new MetaIndexInfo(session, ex); 936 return new ResultSet(mi); 937 } 938 939 946 public int getMaxBinaryLiteralLength() { 947 return 0; 948 } 949 950 956 public int getMaxCatalogNameLength() { 957 return 0; 958 } 959 960 967 public int getMaxCharLiteralLength() { 968 return 0; 969 } 970 971 978 public int getMaxColumnNameLength() { 979 return 0; 980 } 981 982 990 public int getMaxColumnsInGroupBy() { 991 return 0; 992 } 993 994 1001 public int getMaxColumnsInIndex() { 1002 return 0; 1003 } 1004 1005 1013 public int getMaxColumnsInOrderBy() { 1014 return 0; 1015 } 1016 1017 1025 public int getMaxColumnsInSelect() { 1026 return 0; 1027 } 1028 1029 1036 public int getMaxColumnsInTable() { 1037 return 0; 1038 } 1039 1040 1048 public int getMaxConnections() { 1049 return 0; 1050 } 1051 1052 1058 public int getMaxCursorNameLength() { 1059 return 0; 1060 } 1061 1062 1068 public int getMaxIndexLength() { 1069 return 0; 1070 } 1071 1072 1078 public int getMaxProcedureNameLength() { 1079 return 0; 1080 } 1081 1082 1088 public int getMaxRowSize() { 1089 return 0; 1090 } 1091 1092 1099 public int getMaxSchemaNameLength() { 1100 return 0; 1101 } 1102 1103 1110 public int getMaxStatementLength() { 1111 return 0; 1112 } 1113 1114 1124 public int getMaxStatements() { 1125 return 1; 1126 } 1127 1128 1135 public int getMaxTableNameLength() { 1136 return 0; 1137 } 1138 1139 1147 public int getMaxTablesInSelect() { 1148 return 0; 1149 } 1150 1151 1158 public int getMaxUserNameLength() { 1159 return 0; 1160 } 1161 1162 1174 public String getNumericFunctions() { 1175 return 1176 "ABS,ACOS,ASIN,ATAN,ATAN2,CEILING,COS,COT,DEGREES,EXP,FLOOR," + 1177 "LOG,LOG10,MOD,PI,POWER,RADIANS,RAND,ROUND,SIGN,SIN,SQRT,TAN," + 1178 "TRUNCATE"; 1179 } 1180 1181 1225 public java.sql.ResultSet getPrimaryKeys(String catalog, String schema, 1226 String table) 1227 throws SQLException 1228 { 1229 StringBuffer sb = new StringBuffer (""); 1230 doString(sb, "TABLE_SCHEM", schema); 1231 doString(sb, "TABLE_NAME", table); 1232 Expression ex = parseExpression(sb.toString()); 1233 MetaPrimaryKeys mt = new MetaPrimaryKeys(session, ex); 1234 return new ResultSet(mt); 1235 } 1236 1237 1246 public java.sql.ResultSet getProcedureColumns(String catalog, 1247 String schemaNamePattern, 1248 String procedureNamePattern, 1249 String columnNamePattern) 1250 throws SQLException 1251 { 1252 return new ResultSet(MetaCursor.find(session, 1253 "SYSTEM.PROCEDURECOLUMNS")); 1254 } 1255 1263 public java.sql.ResultSet getProcedures(String catalog, 1264 String schemaNamePattern, 1265 String procedureNamePattern) 1266 throws SQLException 1267 { 1268 return new ResultSet(MetaCursor.find(session, "SYSTEM.PROCEDURES")); 1269 } 1270 1271 1272 1275 public String getProcedureTerm() 1276 throws SQLException 1277 { 1278 return "proc"; 1279 } 1280 1281 1285 public java.sql.ResultSet getSchemas() 1286 throws SQLException 1287 { 1288 return new ResultSet(MetaCursor.find(session, "SYSTEM.SCHEMAS")); 1289 } 1290 1291 1296 public String getSchemaTerm() { 1297 return "schema"; 1298 } 1299 1300 1307 public String getSearchStringEscape() { 1308 return ValuePattern.defaultEscape; 1309 } 1310 1311 1318 public String getSQLKeywords() { 1319 return ""; 1320 } 1321 1322 1334 public String getStringFunctions() { 1335 return 1336 "ASCII,CHAR,CONCAT,DIFFERENCE,INSERT,LCASE,LOWER,LEFT,LENGTH," + 1337 "LOCATE,LTRIM,REPEAT,REPLACE,RIGHT,RTRIM,SOUNDEX,SPACE," + 1338 "SUBSTRING,UCASE,UPPER"; 1339 } 1340 1341 1349 public String getSystemFunctions() { 1350 return "DATABASE,IFULL,USER"; 1351 } 1352 1353 1357 public java.sql.ResultSet getTablePrivileges(String catalog, String schema, 1358 String tableNamePattern) 1359 throws SQLException 1360 { 1361 return new ResultSet(MetaCursor.find(session, 1362 "SYSTEM.TABLEPRIVILEGES")); 1363 } 1364 1365 1413 public java.sql.ResultSet getTables(String catalog, String schemaPattern, 1414 String tableNamePattern, 1415 String [] types) 1416 throws SQLException 1417 { 1418 StringBuffer sb = new StringBuffer (); 1419 doPattern(sb, "TABLE_SCHEM", schemaPattern); 1420 doPattern(sb, "TABLE_NAME", tableNamePattern); 1421 if (types != null) { 1422 if (sb.length() > 0) sb.append(" AND "); 1423 sb.append("TABLE_TYPE in ("); 1424 for (int i = 0; i < types.length; i++) { 1425 if (i > 0) sb.append(','); 1426 sb.append('\''); 1427 sb.append(types[i].toUpperCase()); 1428 sb.append('\''); 1429 } 1430 sb.append(")"); 1431 } 1432 Expression ex = parseExpression(sb.toString()); 1433 MetaTables mt = new MetaTables(session, ex); 1434 return new ResultSet(mt); 1435 } 1436 1437 1459 public java.sql.ResultSet getTableTypes() 1460 throws SQLException 1461 { 1462 MetaTableTypes mt = new MetaTableTypes(session); 1463 return new ResultSet(mt); 1464 } 1465 1466 Expression parseExpression(String s) throws SQLException { 1467 if (s.length() == 0) return null; 1468 try { 1469 session.makeTransaction(); 1470 SQLParser p = new SQLParser(session, s, false); 1471 return p.expression(); 1472 } catch (antlr.TokenStreamException e) { 1473 throw new SQLException (e.toString(), "Q000Y"); 1474 } catch (antlr.RecognitionException e) { 1475 throw new SQLException (e.toString(), "42000"); 1476 } 1477 } 1478 1479 1491 public String getTimeDateFunctions() 1492 throws SQLException 1493 { 1494 return 1495 "CURDATE,CURTIME,DAYNAME,DAYOFMONTH,DAYOFWEEK,DAYOFYEAR," + 1496 "HOUR,MINUTE,MONTH,MONTHNAME,NOW,QUARTER,SECOND,TIMESTAMPADD," + 1497 "TIMESTAMPDIFF,WEEK,YEAR"; 1498 } 1499 1500 1601 public java.sql.ResultSet getTypeInfo() 1602 throws SQLException 1603 { 1604 return new ResultSet(new MetaTypes(session)); 1605 } 1606 1607 1611 public java.sql.ResultSet getUDTs(String catalog, String schemaPattern, 1612 String typeNamePattern, int[] types) 1613 throws SQLException 1614 { 1615 return new ResultSet(MetaCursor.find(session, "SYSTEM.UDTS")); 1616 } 1617 1618 1623 public String getURL() { 1624 return database.getURL(); 1625 } 1626 1627 1632 public String getUserName() { 1633 return qConn.getAuth(); 1634 } 1635 1636 1637 1641 public java.sql.ResultSet getVersionColumns(String catalog, String schema, 1642 String table) 1643 throws SQLException 1644 { 1645 return new ResultSet(MetaCursor.find(session, 1646 "SYSTEM.VERSIONCOLUMNS")); 1647 } 1648 1649 1668 public boolean insertsAreDetected(int type) { 1669 return false; 1670 } 1671 1672 1676 public boolean isCatalogAtStart() 1677 throws SQLException 1678 { 1679 return true; 1680 } 1681 1682 1688 public boolean isReadOnly() { 1689 return false; 1690 } 1691 1692 1701 public boolean nullPlusNonNullIsNull() { 1702 return true; 1703 } 1704 1705 1710 public boolean nullsAreSortedAtEnd() { 1711 return false; 1712 } 1713 1714 1719 public boolean nullsAreSortedAtStart() { 1720 return false; 1721 } 1722 1723 1728 public boolean nullsAreSortedHigh() { 1729 return false; 1730 } 1731 1732 1737 public boolean nullsAreSortedLow() { 1738 return true; 1739 } 1740 1741 1749 public boolean othersDeletesAreVisible(int type) { 1750 return false; 1751 } 1752 1753 1761 public boolean othersInsertsAreVisible(int type) { 1762 return false; 1763 } 1764 1765 1773 public boolean othersUpdatesAreVisible(int type) { 1774 return false; 1775 } 1776 1777 1783 public boolean ownDeletesAreVisible(int type) { 1784 return false; 1785 } 1786 1787 1793 public boolean ownInsertsAreVisible(int type) { 1794 return false; 1795 } 1796 1797 1803 public boolean ownUpdatesAreVisible(int type) { 1804 return true; 1805 } 1806 1807 1813 public boolean storesLowerCaseIdentifiers() { 1814 return false; 1815 } 1816 1817 1824 public boolean storesLowerCaseQuotedIdentifiers() { 1825 return false; 1826 } 1827 1828 1834 public boolean storesMixedCaseIdentifiers() { 1835 return false; 1836 } 1837 1838 1845 public boolean storesMixedCaseQuotedIdentifiers() { 1846 return false; 1847 } 1848 1849 1855 public boolean storesUpperCaseIdentifiers() { 1856 return true; 1857 } 1858 1859 1866 public boolean storesUpperCaseQuotedIdentifiers() { 1867 return true; 1868 } 1869 1870 1875 public boolean supportsANSI92EntryLevelSQL() { 1876 return true; 1877 } 1878 1879 1905 public boolean supportsANSI92IntermediateSQL() { 1906 return false; 1907 } 1908 1909 1935 public boolean supportsANSI92FullSQL() { 1936 return false; 1937 } 1938 1939 1944 public boolean supportsAlterTableWithAddColumn() { 1945 return true; 1946 } 1947 1948 1954 public boolean supportsAlterTableWithDropColumn() { 1955 return false; 1956 } 1957 1958 1963 public boolean supportsBatchUpdates() { 1964 return false; 1965 } 1966 1967 1972 public boolean supportsCatalogsInDataManipulation() { 1973 return false; 1974 } 1975 1976 1981 public boolean supportsCatalogsInIndexDefinitions() 1982 throws SQLException 1983 { 1984 return false; 1985 } 1986 1987 1992 public boolean supportsCatalogsInPrivilegeDefinitions() { 1993 return false; 1994 } 1995 1996 2001 public boolean supportsCatalogsInProcedureCalls() { 2002 return false; 2003 } 2004 2005 2010 public boolean supportsCatalogsInTableDefinitions() { 2011 return false; 2012 } 2013 2014 2020 public boolean supportsColumnAliasing() { 2021 return true; 2022 } 2023 2024 2032 public boolean supportsConvert() { 2033 return true; 2034 } 2035 2036 2046 public boolean supportsConvert(int fromType, int toType) { 2047 return true; 2048 } 2049 2050 2056 public boolean supportsCoreSQLGrammar() { 2057 return false; 2058 } 2059 2060 2065 public boolean supportsCorrelatedSubqueries() { 2066 return true; 2067 } 2068 2069 2075 public boolean supportsDataDefinitionAndDataManipulationTransactions() { 2076 return true; 2077 } 2078 2079 2095 public boolean supportsDataManipulationTransactionsOnly() { 2096 return true; 2097 } 2098 2099 2106 public boolean supportsDifferentTableCorrelationNames() { 2107 return false; 2108 } 2109 2110 2115 public boolean supportsExpressionsInOrderBy() { 2116 return false; 2117 } 2118 2119 2124 public boolean supportsExtendedSQLGrammar() { 2125 return false; 2126 } 2127 2128 2133 public boolean supportsFullOuterJoins() { 2134 return true; 2135 } 2136 2137 2142 public boolean supportsGroupBy() { 2143 return true; 2144 } 2145 2146 2152 public boolean supportsGroupByBeyondSelect() { 2153 return false; 2154 } 2155 2156 2162 public boolean supportsGroupByUnrelated() { 2163 return false; 2164 } 2165 2166 2171 public boolean supportsIntegrityEnhancementFacility() { 2172 return false; 2173 } 2174 2175 2181 public boolean supportsLikeEscapeClause() { 2182 return true; 2183 } 2184 2185 2192 public boolean supportsLimitedOuterJoins() { 2193 return true; 2194 } 2195 2196 2201 public boolean supportsMinimumSQLGrammar() { 2202 return true; 2203 } 2204 2205 2211 public boolean supportsMixedCaseIdentifiers() { 2212 return false; 2213 } 2214 2215 2221 public boolean supportsMixedCaseQuotedIdentifiers() { 2222 return true; 2223 } 2224 2225 2231 public boolean supportsMultipleResultSets() { 2232 return true; 2233 } 2234 2235 2241 public boolean supportsMultipleTransactions() { 2242 return true; 2243 } 2244 2245 2251 public boolean supportsNonNullableColumns() { 2252 return true; 2253 } 2254 2255 2260 public boolean supportsOpenCursorsAcrossCommit() { 2261 return false; 2262 } 2263 2264 2269 public boolean supportsOpenCursorsAcrossRollback() { 2270 return false; 2271 } 2272 2273 2279 public boolean supportsOpenStatementsAcrossCommit() { 2280 return true; 2281 } 2282 2283 2289 public boolean supportsOpenStatementsAcrossRollback() { 2290 return true; 2291 } 2292 2293 2299 public boolean supportsOrderByUnrelated() { 2300 return false; 2301 } 2302 2303 2308 public boolean supportsOuterJoins() { 2309 return true; 2310 } 2311 2312 2317 public boolean supportsPositionedDelete() { 2318 return true; 2319 } 2320 2321 2326 public boolean supportsPositionedUpdate() { 2327 return true; 2328 } 2329 2330 2335 public boolean supportsSchemasInDataManipulation() { 2336 return true; 2337 } 2338 2339 2344 public boolean supportsSchemasInIndexDefinitions() { 2345 return true; 2346 } 2347 2348 2353 public boolean supportsSchemasInPrivilegeDefinitions() { 2354 return false; 2355 } 2356 2357 2362 public boolean supportsSchemasInProcedureCalls() { 2363 return false; 2364 } 2365 2366 2371 public boolean supportsSchemasInTableDefinitions() { 2372 return true; 2373 } 2374 2375 2380 public boolean supportsSelectForUpdate() { 2381 return true; 2382 } 2383 2384 2389 public boolean supportsStoredProcedures() { 2390 return false; 2391 } 2392 2393 2398 public boolean supportsSubqueriesInComparisons() { 2399 return true; 2400 } 2401 2402 2407 public boolean supportsSubqueriesInExists() { 2408 return true; 2409 } 2410 2411 2416 public boolean supportsSubqueriesInIns() { 2417 return true; 2418 } 2419 2420 2425 public boolean supportsSubqueriesInQuantifieds() { 2426 return true; 2427 } 2428 2429 2434 public boolean supportsTableCorrelationNames() { 2435 return true; 2436 } 2437 2438 2445 public boolean supportsTransactionIsolationLevel(int level) { 2446 return level == Connection.TRANSACTION_SERIALIZABLE; 2447 } 2448 2449 2454 public boolean supportsTransactions() { 2455 return true; 2456 } 2457 2458 2463 public boolean supportsUnion() { 2464 return true; 2465 } 2466 2467 2472 public boolean supportsUnionAll() { 2473 return true; 2474 } 2475 2476 2483 public boolean updatesAreDetected(int type) { 2484 return false; 2485 } 2486 2487 2492 public boolean usesLocalFilePerTable() { 2493 return false; 2494 } 2495 2496 2502 public boolean usesLocalFiles() { 2503 return true; 2504 } 2505 2506 2518 public boolean supportsResultSetConcurrency(int type, int concurrency) { 2519 return supportsResultSetType(type); 2520 } 2521 2522 2530 public boolean supportsResultSetType(int type) { 2531 return type == ResultSet.TYPE_FORWARD_ONLY; 2532 } 2533 2535 2536 2538 2547 public boolean supportsSavepoints() 2548 throws SQLException 2549 { 2550 return false; 2551 } 2552 2553 2562 public boolean supportsNamedParameters() 2563 throws SQLException 2564 { 2565 return false; 2566 } 2567 2568 2580 public boolean supportsMultipleOpenResults() 2581 throws SQLException 2582 { 2583 return false; 2584 } 2585 2586 2595 public boolean supportsGetGeneratedKeys() 2596 throws SQLException 2597 { 2598 return false; 2599 } 2600 2601 2646 public java.sql.ResultSet getSuperTypes(String catalog, 2647 String schemaPattern, 2648 String typeNamePattern) 2649 throws SQLException 2650 { 2651 throw new SQLException ("Not implemented"); 2652 } 2653 2654 2693 public java.sql.ResultSet getSuperTables(String catalog, 2694 String schemaPattern, 2695 String tableNamePattern) 2696 throws SQLException 2697 { 2698 throw new SQLException ("Not implemented"); 2699 } 2700 2701 2708 2710 2717 2719 2727 2729 2810 public java.sql.ResultSet getAttributes(String catalog, 2811 String schemaPattern, 2812 String typeNamePattern, 2813 String attributeNamePattern) 2814 throws SQLException 2815 { 2816 throw new SQLException ("Not implemented"); 2817 } 2818 2819 2831 public boolean supportsResultSetHoldability(int holdability) 2832 throws SQLException 2833 { 2834 return (holdability == ResultSet.CLOSE_CURSORS_AT_COMMIT); 2835 } 2836 2837 2847 public int getResultSetHoldability() 2848 throws SQLException 2849 { 2850 return ResultSet.CLOSE_CURSORS_AT_COMMIT; 2851 } 2852 2853 2860 public int getDatabaseMajorVersion() 2861 throws SQLException 2862 { 2863 return Version.majorVersion; 2864 } 2865 2866 2873 public int getDatabaseMinorVersion() throws SQLException { 2874 return Version.minorVersion; 2875 } 2876 2877 2885 public int getJDBCMajorVersion() 2886 throws SQLException 2887 { 2888 return 3; 2889 } 2890 2891 2899 public int getJDBCMinorVersion() 2900 throws SQLException 2901 { 2902 return 0; 2903 } 2904 2905 2913 2915 2922 2924 2934 public int getSQLStateType() 2935 throws SQLException 2936 { 2937 return sqlStateXOpen; 2938 } 2939 2940 2948 public boolean locatorsUpdateCopy() 2949 throws SQLException 2950 { 2951 return true; 2952 } 2953 2954 2962 public boolean supportsStatementPooling() 2963 throws SQLException 2964 { 2965 return false; 2966 } 2967 } 2969 | Popular Tags |