KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > in > co > daffodil > db > jdbc > DatabaseProperties


1 package in.co.daffodil.db.jdbc;
2
3 import java.sql.*;
4 import com.daffodilwoods.daffodildb.server.datadictionarysystem.SystemTables;
5 import com.daffodilwoods.daffodildb.server.sql99.common.*;
6 import com.daffodilwoods.database.general.SystemFieldsInfo;
7
8 public class DatabaseProperties {
9
10    private int charLiteralLength = 0;
11    private int binaryLiteralLength = 0;
12    public static final boolean allProceduresAreCallable = true;
13    public static final boolean allTablesAreSelectable = true;
14    public static final boolean nullsAreSortedHigh = false;
15    public static final boolean nullsAreSortedLow = true;
16    public static final boolean nullsAreSortedAtStart = false;
17    public static final boolean nullsAreSortedAtEnd = false;
18    public static final String JavaDoc databaseProductName = "DaffodilDB";
19    public static final String JavaDoc databaseProductVersion = "4.1";
20    public static final int databaseMajorVersion = 4;
21    public static final int databaseMinorVersion = 1;
22    public static final int driverMajorVersion = 1;
23    public static final int driverMinorVersion = 0;
24    public static final String JavaDoc driverName = "DaffodilDBDriver";
25    public static final String JavaDoc driverVersion = "1.0";
26    public static final int JDBCMajorVersion = 2;
27    public static final int JDBCMinorVersion = 1;
28
29    public static final boolean usesLocalFiles = true;
30    public static final boolean usesLocalFilePerTable = false;
31    public static final boolean supportsMixedCaseIdentifiers = false;
32    public static final boolean storesUpperCaseIdentifiers = false;
33    public static final boolean storesLowerCaseIdentifiers = false;
34    public static final boolean storesMixedCaseIdentifiers = true;
35    public static final boolean supportsMixedCaseQuotedIdentifiers = false;
36    public static final boolean storesUpperCaseQuotedIdentifiers = false;
37    public static final boolean storesLowerCaseQuotedIdentifiers = false;
38    public static final boolean storesMixedCaseQuotedIdentifiers = false;
39    public static final String JavaDoc identifierQuoteString = " ";
40
41    public static final boolean supportsAlterTableWithAddColumn = true;
42    public static final boolean supportsAlterTableWithDropColumn = true;
43    public static final boolean supportsColumnAliasing = true;
44    public static final boolean nullPlusNonNullIsNull = true;
45    public static final boolean supportsConvert = true;
46    public static final boolean supportsTableCorrelationNames = true;
47    public static final boolean supportsDifferentTableCorrelationNames = true;
48    public static final boolean supportsExpressionsInOrderBy = true;
49    public static final boolean supportsOrderByUnrelated = true;
50    public static final boolean supportsGroupBy = true;
51    public static final boolean supportsGroupByUnrelated = false;
52    public static final boolean supportsGroupByBeyondSelect = true;
53    public static final boolean supportsLikeEscapeClause = true;
54    public static final boolean supportsMultipleResultSets = true;
55    public static final boolean supportsMultipleTransactions = true;
56    public static final boolean supportsNonNullableColumns = true;
57    public static final boolean supportsMinimumSQLGrammar = true;
58    public static final boolean supportsCoreSQLGrammar = true;
59    public static final boolean supportsExtendedSQLGrammar = true;
60    public static final boolean supportsANSI92EntryLevelSQL = true;
61    public static final boolean supportsANSI92IntermediateSQL = true;
62    public static final boolean supportsANSI92FullSQL = true;
63    public static final boolean supportsIntegrityEnhancementFacility = true;
64    public static final boolean supportsOuterJoins = true;
65    public static final boolean supportsFullOuterJoins = false;
66    public static final boolean supportsLimitedOuterJoins = true;
67    public static final String JavaDoc schemaTerm = "Schema";
68    public static final String JavaDoc procedureTerm = "Procedure";
69    public static final String JavaDoc catalogTerm = "Catalog";
70    public static final boolean isCatalogAtStart = true;
71    public static final String JavaDoc catalogSeparator = ".";
72    public static final boolean supportsSchemasInDataManipulation = true;
73    public static final boolean supportsSchemasInProcedureCalls = true;
74    public static final boolean supportsSchemasInTableDefinitions = true;
75    public static final boolean supportsSchemasInIndexDefinitions = true;
76    public static final boolean supportsSchemasInPrivilegeDefinitions = true;
77    public static final boolean supportsCatalogsInDataManipulation = true;
78    public static final boolean supportsCatalogsInProcedureCalls = true;
79    public static final boolean supportsCatalogsInTableDefinitions = true;
80    public static final boolean supportsCatalogsInIndexDefinitions = true;
81    public static final boolean supportsCatalogsInPrivilegeDefinitions = true;
82    public static final boolean supportsPositionedDelete = false; // Changes according to Manoj dated 20/05/04 by Harvinder
83
public static final boolean supportsPositionedUpdate = false; // Changes according to Manoj dated 20/05/04 by Harvinder
84
public static final boolean supportsSelectForUpdate = true; // Changes according to Manoj dated 20/05/04 by Harvinder
85
public static final boolean supportsStoredProcedures = true;
86    public static final boolean supportsSubqueriesInComparisons = true;
87    public static final boolean supportsSubqueriesInExists = true;
88    public static final boolean supportsSubqueriesInIns = true;
89    public static final boolean supportsSubqueriesInQuantifieds = true;
90    public static final boolean supportsCorrelatedSubqueries = true;
91    public static final boolean supportsUnion = true;
92    public static final boolean supportsUnionAll = true;
93    public static final boolean supportsOpenCursorsAcrossCommit = true;
94    public static final boolean supportsOpenCursorsAcrossRollback = true;
95    public static final boolean supportsOpenStatementsAcrossCommit = true;
96    public static final boolean supportsOpenStatementsAcrossRollback = true;
97
98    public static final int maxBinaryLiteralLength = 0;
99    public static final int maxCharLiteralLength = 4192;
100    public static final int maxColumnNameLength = 128; //SystemTablesCreator.SQLIdentifierSize.intValue();
101
public static final int maxColumnsInGroupBy = 0;
102    public static final int maxColumnsInIndex = 0;
103    public static final int maxColumnsInOrderBy = 0;
104    public static final int maxColumnsInSelect = 0;
105    public static final int maxColumnsInTable = 0;
106    public static final int maxConnections = 0;
107    public static final int maxCursorNameLength = 0;
108    public static final int maxIndexLength = 0;
109    public static final int maxSchemaNameLength = 128; //SystemTablesCreator.SQLIdentifierSize.intValue();
110
public static final int maxProcedureNameLength = 128; //SystemTablesCreator.SQLIdentifierSize.intValue();
111
public static final int maxCatalogNameLength = 128; //SystemTablesCreator.SQLIdentifierSize.intValue();
112
public static final int maxRowSize = 0;
113    public static final boolean doesMaxRowSizeIncludeBlobs = false;
114    public static final int maxStatementLength = 0;
115    public static final int maxStatements = 0;
116    public static final int maxTableNameLength = 128; //SystemTablesCreator.SQLIdentifierSize.intValue();
117
public static final int maxTablesInSelect = 0;
118    public static final int maxUserNameLength = 128; //SystemTablesCreator.SQLIdentifierSize.intValue();
119

120    public static final int defaultTransactionIsolation = 0;
121    public static final boolean supportsTransactions = true;
122    public static final boolean supportsDataDefinitionAndDataManipulationTransactions = true;
123    public static final boolean supportsDataManipulationTransactionsOnly = true;
124    public static final boolean dataDefinitionCausesTransactionCommit = true;
125    public static final boolean dataDefinitionIgnoredInTransactions = false;
126    public static final boolean supportsBatchUpdates = true;
127    public static final boolean supportsSavepoints = true;
128    /** @todo to be confirmed*/
129    public static final boolean supportsNamedParameters = false;
130    /** @todo to be confirmed*/
131    public static final boolean supportsMultipleOpenResults = false;
132    /** @todo to be confirmed*/
133    public static final boolean supportsGetGeneratedKeys = false;
134    public static final boolean jdbcCompliant = true;
135
136    public static boolean deletesAreDetected(int type) {
137       return type != java.sql.ResultSet.TYPE_FORWARD_ONLY;
138    }
139
140    public static boolean insertsAreDetected(int type) {
141       return type != java.sql.ResultSet.TYPE_FORWARD_ONLY;
142    }
143
144    public static boolean updatesAreDetected(int type) {
145       return type != java.sql.ResultSet.TYPE_FORWARD_ONLY;
146    }
147
148    public static boolean othersDeletesAreVisible(int type) {
149       return type == java.sql.ResultSet.TYPE_SCROLL_SENSITIVE;
150    }
151
152    public static boolean othersInsertsAreVisible(int type) {
153       return type == java.sql.ResultSet.TYPE_SCROLL_SENSITIVE;
154    }
155
156    public static boolean othersUpdatesAreVisible(int type) {
157       return type == java.sql.ResultSet.TYPE_SCROLL_SENSITIVE;
158    }
159
160    public static boolean ownDeletesAreVisible(int type) {
161       return type != java.sql.ResultSet.TYPE_FORWARD_ONLY;
162    }
163
164    public static boolean ownInsertsAreVisible(int type) {
165       return type != java.sql.ResultSet.TYPE_FORWARD_ONLY;
166    }
167
168    public static boolean ownUpdatesAreVisible(int type) {
169       return type != java.sql.ResultSet.TYPE_FORWARD_ONLY;
170    }
171
172    public static String JavaDoc getSQLKeywords() {
173       return "ABSOLUTE,ACTION,ADD,ADMIN,AFTER,AGGREGATE,ALIAS,ALL,ALLOCATE,ALTER,"
174           + "AND,ANY,ARE,ARRAY,AS,ASC,ASSERTION,AT,AUTHORIZATION,AVG,BEFORE,BEGIN,"
175           + "BIGINT,BINARY,BIT,BLOB,BOOLEAN,BOTH,BREADTH,BY,BYTE,CALL,CASCADE,CASCADED,"
176           + "CASE,CAST,CATALOG,CHAR,CHARACTER,CHECK,CLASS,CLOB,CLOSE,COLLATE,COLLATION,"
177           + "COLUMN,COMMIT,COMPLETION,CONNECT,CONNECTION,CONSTRAINT,CONSTRAINTS,"
178           + "CONSTRUCTOR,CONTINUE,CORRESPONDING,COUNT,CREATE,CROSS,CUBE,CURRENT,"
179           + "CURRENTDATE,CURRENTPATH,CURRENTROLE,CURRENTTIMESTAMP,CURRENTTIME,"
180           + "CURRENTUSER,CURSOR,CYCLE,DATA,DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,"
181           + "DEFAULT,DEFERRABLE,DEFERRED,DELETE,DEPTH,DEREF,DESC,DESCRIBE,DESCRIPTOR,"
182           + "DESTROY,DESTRUCTOR,DETERMINISTIC,DIAGNOSTICS,DICTIONARY,DISCONNECT,"
183           + "DISTINCT,DOMAIN,DOUBLE,DROP,DYNAMIC,EACH,ELSE,END,ENDEXEC,EQUALS,ESCAPE,"
184           + "EVERY,EXCEPT,EXCEPTION,EXEC,EXECUTE,EXTERNAL,FALSE,FETCH,FIRST,FLOAT,"
185           + "FOR,FOREIGN,FOUND,FREE,FROM,FULL,FUNCTION,GENERAL,GET,GLOBAL,GO,GOTO,"
186           + "GRANT,GROUP,GROUPING,HAVING,HOST,HOUR,IDENTITY,IGNORE,IMMEDIATE,IN,"
187           + "INDICATOR,INITIALIZE,INITIALLY,INNER,INOUT,INPUT,INSERT,INT,INTEGER,"
188           + "INTERSECT,INTERVAL,INTO,IS,ISOLATION,ITERATE,JOIN,KEY,LANGUAGE,LARGE,"
189           + "LAST,LATERAL,LEADING,LEFT,LESS,LEVEL,LIKE,LIMIT,LOCAL,LOCALTIME,"
190           + "LOCALTIMESTAMP,LOCATOR,LONG,MAP,MATCH,MAX,MIN,MINUTE,MODIFIES,MODIFY,"
191           + "MODULE,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NCLOB,NEW,NEXT,NO,NONE,NOT,"
192           + "NULL,NUMERIC,OBJECT,OF,OFF,OLD,ON,ONLY,OPEN,OPERATION,OR,ORDER,"
193           + "ORDINALITY,OUT,OUTER,OUTPUT,PAD,PARAMETER,PARAMETERS,PARTIAL,PATH,"
194           + "POSTFIX,PRECISION,PREFIX,PREORDER,PREPARE,PRESERVE,PRIMARY,PRIOR,"
195           + "PRIVILEGES,PROCEDURE,PUBLIC,READ,READS,REAL,RECURSIVE,REF,REFERENCES,"
196           + "REFERENCING,RELATIVE,RESTRICT,RESULT,RETURNS,RETURN,REVOKE,RIGHT,ROLE,"
197           + "ROLLBACK,ROLLUP,ROUTINE,ROW,ROWS,SAVEPOINT,SCHEMA,SCOPE,SCROLL,SEARCH,"
198           + "SECOND,SECTION,SELECT,SEQUENCE,SESSION,SESSIONUSER,SET,SETS,SIZE,"
199           + "SMALLINT,SOME,SPACE,SPECIFICTYPE,SPECIFIC,SQL,SQLEXCEPTION,SQLSTATE,"
200           + "SQLWARNING,START,STATE,STATEMENT,STATIC,STRUCTURE,SUM,SYSTEMUSER,TABLE,"
201           + "TEMPORARY,TERMINATE,THAN,THEN,TIME,TIMESTAMP,TIMEZONEHOUR,"
202           + "TIMEZONEMINUTE,TO,TRAILING,TRANSACTION,TRANSLATION,TREAT,TRIGGER,TRUE,"
203           + "UNDER,UNION,UNIQUE,UNKNOWN,UNNEST,UPDATE,USAGE,USER,USING,VALUE,VALUES,"
204           + "VARBINARY,VARCHAR,VARIABLE,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,"
205           + "WITHOUT,WORK,WRITE,YEAR,ZONE,CONDITION,DO,ELSEIF,EXIT,HANDLER,IF,ITERATE,"
206           + "LEAVE,LOOP,REDO,REPEAT,RESIGNAL,SIGNAL,UNDO,UNTIL,WHILE";
207    }
208
209    public static String JavaDoc getNumericFunctions() {
210       return "ABS, ACOS, ASIN, ATAN, ATAN2, CEILING, COS, COT, DEGREES, EXP, FLOOR,"
211           + " LOG,MOD, PI, POWER, RADIANS, RAND, ROUND, SIGN, SIN, SQRT, TAN, TRUNCATE";
212    }
213
214    public static String JavaDoc getStringFunctions() {
215       return "ASCII, CHAR, CONCAT,INSERT, LCASE, LEFT, LENGTH, LOCATE, LTRIM, REPEAT,"
216           + " REPLACE, RIGHT, RTRIM, SPACE, SUBSTRING, UCASE";
217    }
218
219    public static String JavaDoc getSystemFunctions() {
220       return "IFNULL";
221    }
222
223    public static String JavaDoc getTimeDateFunctions() {
224       return "CURDATE, CURTIME, DAYNAME, DAYOFMONTH, DAYOFWEEK, DAYOFYEAR, HOUR, MINUTE, MONTH, MONTHNAME,SECOND, WEEK, YEAR,TIMESTAMPADD,TIMESTAMPDIFF";
225    }
226
227    public static String JavaDoc getSearchStringEscape() {
228       return "_%";
229    }
230
231    public static String JavaDoc getExtraNameCharacters() {
232       return "";
233    }
234
235    public static boolean supportsConvert(int fromType, int toType) throws java.
236
JavaDoc       sql.SQLException {
237       return Utilities.isConvertable(fromType, toType);
238    }
239
240    public static boolean supportsTransactionIsolationLevel(int level) {
241       return true;
242    }
243
244    public static boolean supportsResultSetType(int type) {
245       return true;
246    }
247
248    public static boolean supportsResultSetConcurrency(int type, int concurrency) {
249       return true;
250    }
251
252    public static boolean supportsResultSetHoldability(int holdability) {
253       return false;
254    }
255
256    public static String JavaDoc[] getTableTypes() {
257       return new String JavaDoc[] {
258           "Table", "View", "System Table"};
259    }
260
261    public static Object JavaDoc[][] getTypeInfo() {
262       return new Object JavaDoc[][] { {"character", new Short JavaDoc("" + Types.CHAR), new Integer JavaDoc(4192), "\'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.CHAR), null, null}
263           , {"char", new Short JavaDoc("" + Types.CHAR), new Integer JavaDoc(4192), "\'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.CHAR), null, null}
264           , {"character varying", new Short JavaDoc("" + Types.VARCHAR), new Integer JavaDoc(4192), "\'", "\'", "max length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.VARCHAR), null, null}
265           , {"char varying", new Short JavaDoc("" + Types.VARCHAR), new Integer JavaDoc(4192), "\'", "\'", "max length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.VARCHAR), null, null}
266           , {"varchar", new Short JavaDoc("" + Types.VARCHAR), new Integer JavaDoc(4192), "\'", "\'", "max length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.VARCHAR), null, null}
267           , {"character large object", new Short JavaDoc("" + Types.CLOB), new Integer JavaDoc(1073741823), "\'", "\'", "max length", new Short JavaDoc("1"), Boolean.TRUE, new Short JavaDoc("0"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.CLOB), null, null}
268           , {"char large object", new Short JavaDoc("" + Types.CLOB), new Integer JavaDoc(1073741823), "\'", "\'", "max length", new Short JavaDoc("1"), Boolean.TRUE, new Short JavaDoc("0"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.CLOB), null, null}
269           , {"clob", new Short JavaDoc("" + Types.CLOB), new Integer JavaDoc(1073741823), "\'", "\'", "max length", new Short JavaDoc("1"), Boolean.TRUE, new Short JavaDoc("0"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.CLOB), null, null}
270           , {"blob", new Short JavaDoc("" + Types.BLOB), new Integer JavaDoc(1073741823), "X'", "\'", "max length", new Short JavaDoc("1"), Boolean.TRUE, new Short JavaDoc("0"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.BLOB), null, null}
271           , {"bit", new Short JavaDoc("" + Types.BINARY), new Integer JavaDoc(4192), "B'| X'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.BINARY), null, null}
272           , {"bit varying", new Short JavaDoc("" + Types.VARBINARY), new Integer JavaDoc(4192), "B'| X'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.VARBINARY), null, null}
273           , {"numeric", new Short JavaDoc("" + Types.NUMERIC), new Integer JavaDoc(28), null, null, "precision,scale", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("28"), new Integer JavaDoc("" + Types.NUMERIC), null, new Integer JavaDoc(10)}
274           , {"decimal", new Short JavaDoc("" + Types.DECIMAL), new Integer JavaDoc(28), null, null, "precision,scale", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("28"), new Integer JavaDoc("" + Types.DECIMAL), null, new Integer JavaDoc(10)}
275           , {"dec", new Short JavaDoc("" + Types.DECIMAL), new Integer JavaDoc(28), null, null, "precision,scale", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("28"), new Integer JavaDoc("" + Types.DECIMAL), null, new Integer JavaDoc(10)}
276           , {"int", new Short JavaDoc("" + Types.INTEGER), new Integer JavaDoc(10), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.INTEGER), null, new Integer JavaDoc(10)}
277           , {"integer", new Short JavaDoc("" + Types.INTEGER), new Integer JavaDoc(10), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.INTEGER), null, new Integer JavaDoc(10)}
278           , {"long", new Short JavaDoc("" + Types.BIGINT), new Integer JavaDoc(19), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.BIGINT), null, new Integer JavaDoc(10)}
279           , {"bigint", new Short JavaDoc("" + Types.BIGINT), new Integer JavaDoc(19), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.BIGINT), null, new Integer JavaDoc(10)}
280           , {"smallint", new Short JavaDoc("" + Types.SMALLINT), new Integer JavaDoc(5), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.SMALLINT), null, new Integer JavaDoc(10)}
281           , {"float", new Short JavaDoc("" + Types.FLOAT), new Integer JavaDoc(15), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.FLOAT), null, new Integer JavaDoc(10)}
282           , {"real", new Short JavaDoc("" + Types.REAL), new Integer JavaDoc(7), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.REAL), null, new Integer JavaDoc(10)}
283           , {"double precision", new Short JavaDoc("" + Types.DOUBLE), new Integer JavaDoc(15), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.DOUBLE), null, new Integer JavaDoc(10)}
284           , {"boolean", new Short JavaDoc("" + Types.BIT), new Integer JavaDoc(1), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.BIT), null, null}
285           , {"date", new Short JavaDoc("" + Types.DATE), new Integer JavaDoc(10), "DATE '", "\'", null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc(91), new Integer JavaDoc("" + Types.DATE), null}
286           , {"time", new Short JavaDoc("" + Types.TIME), new Integer JavaDoc(9), "TIME '", "\'", "timeprecision", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc(92), new Integer JavaDoc("" + Types.TIME), null}
287           , {"timeStamp", new Short JavaDoc("" + Types.TIMESTAMP), new Integer JavaDoc(9), "TIMESTAMP '", "\'", "timestampprecision", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc(93), new Integer JavaDoc("" + Types.TIMESTAMP), null}
288           , {"binary", new Short JavaDoc("" + Types.BINARY), new Integer JavaDoc(4192), "B'| X'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.BINARY), null, null}
289           , {"varbinary", new Short JavaDoc("" + Types.VARBINARY), new Integer JavaDoc(4192), "B'| X'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.VARBINARY), null, null}
290           , {"long varbinary", new Short JavaDoc("" + Types.LONGVARBINARY), new Integer JavaDoc(1073741823), "B'| X'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.LONGVARBINARY), null, null}
291           , {"long varbinary", new Short JavaDoc("" + Types.JAVA_OBJECT), new Integer JavaDoc(1073741823), "B'| X'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.JAVA_OBJECT), null, null}
292           , {"long varbinary", new Short JavaDoc("" + Types.OTHER), new Integer JavaDoc(1073741823), "B'| X'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.JAVA_OBJECT), null, null}
293           , {"null", new Short JavaDoc("" + Types.NULL), new Integer JavaDoc(0), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.NULL), null, null}
294           , {"tinyint", new Short JavaDoc("" + Types.TINYINT), new Integer JavaDoc(5), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.TINYINT), null, new Integer JavaDoc(10)}
295           , {"byte", new Short JavaDoc("" + Types.TINYINT), new Integer JavaDoc(5), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.TINYINT), null, new Integer JavaDoc(10)}
296           , {"long varchar", new Short JavaDoc("" + Types.LONGVARCHAR), new Integer JavaDoc(1073741823), "\'", "\'", "length", new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("3"), null, Boolean.FALSE, null, null, null, null, new Integer JavaDoc("" + Types.LONGVARCHAR), null, null}
297           , {"boolean", new Short JavaDoc("" + Types.BOOLEAN), new Integer JavaDoc(1), null, null, null, new Short JavaDoc("1"), Boolean.FALSE, new Short JavaDoc("2"), Boolean.FALSE, Boolean.FALSE, Boolean.FALSE, null, new Short JavaDoc("0"), new Short JavaDoc("0"), new Integer JavaDoc("" + Types.BOOLEAN), null, null}
298           ,
299       };
300    }
301
302    public static String JavaDoc getProceduresQuery(String JavaDoc catalog, String JavaDoc schemaPattern,
303                                            String JavaDoc procedureNamePattern) {
304       StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
305       buffer.append("select routine_catalog as PROCEDURE_CAT,routine_schema as PROCEDURE_SCHEM, ")
306           .append(" routine_name as PROCEDURE_NAME,'reserved1' as RESERVED1,'reserved2' as RESERVED2, ")
307           .append(" 'reserved3' as RESERVED3,'nocomments' as REMARKS," + DatabaseMetaData.procedureNoResult + " as PROCEDURE_TYPE from ")
308           .append(SystemTables.routines_TableName)
309           .append(" where routine_type='").append(SqlKeywords.PROCEDURE).append("' ");
310
311       StringBuffer JavaDoc whereClause = new StringBuffer JavaDoc();
312       if (catalog != null) {
313          whereClause.append(shouldUseLikePredicate(catalog) ? " and routine_catalog like '" : " and routine_catalog = '")
314              .append(catalog)
315              .append("' ");
316       }
317       if (schemaPattern != null) {
318          whereClause.append(shouldUseLikePredicate(schemaPattern) ? " and routine_schema like '" : " and routine_schema = '")
319              .append(schemaPattern)
320              .append("' ");
321       }
322       if (procedureNamePattern != null) {
323          whereClause.append(shouldUseLikePredicate(procedureNamePattern) ? " and routine_name like '" : " and routine_name = '")
324              .append(procedureNamePattern)
325              .append("' ");
326       }
327       buffer.append(whereClause.toString());
328       return buffer.toString();
329    }
330
331    public static String JavaDoc getProcedureColumnsQuery(String JavaDoc catalog,
332                                                  String JavaDoc schemaPattern,
333                                                  String JavaDoc procedureNamePattern,
334                                                  String JavaDoc columnNamePattern) {
335       return null;
336    }
337
338    public static String JavaDoc getTablesQuery(String JavaDoc catalog, String JavaDoc schemaPattern,
339                                        String JavaDoc tableNamePattern, String JavaDoc types[]) {
340       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
341       StringBuffer JavaDoc whereClause = new StringBuffer JavaDoc("");
342       if (catalog != null)
343          whereClause.append( (shouldUseLikePredicate(catalog) ? "and table_catalog Like '" : "and table_catalog = '"))
344              .append(catalog).append("' ");
345       if (schemaPattern != null)
346          whereClause.append( (shouldUseLikePredicate(schemaPattern) ? "and table_schema Like '" : "and table_schema = '"))
347              .append(schemaPattern).append("' ");
348       if (tableNamePattern != null)
349          whereClause.append( (shouldUseLikePredicate(tableNamePattern) ? "and table_name Like '" : "and table_name = '"))
350              .append(tableNamePattern).append("' ");
351       if (types != null) {
352          whereClause.append("and ( table_type = '").append(types[0]).append("'");
353          for (int i = 1, size = types.length; i < size; i++)
354             whereClause.append(" or table_type = '").append(types[i]).append("'");
355          whereClause.append(")");
356       }
357       String JavaDoc selectClause = " select table_catalog as TABLE_CAT,table_schema as TABLE_SCHEM,table_name as TABLE_NAME,table_type as TABLE_TYPE, 'nocomments' as REMARKS";
358       String JavaDoc orderBy = " order by table_type, table_schema, table_name ";
359       query.append(selectClause);
360       query.append(" from ").append(SystemTables.tables_TableName);
361       String JavaDoc whereStr = whereClause.toString();
362       if (!whereStr.equals(""))
363          query.append(" where ").append(whereStr.substring(4));
364       query.append(orderBy);
365       return query.toString();
366    }
367
368    public static String JavaDoc getSchemasQuery() {
369       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
370       query.append(" Select schema_name as TABLE_SCHEM,catalog_name as TABLE_CATALOG ");
371       query.append(" from ").append(SystemTables.schema_TableName);
372       query.append(" order by schema_name");
373       return query.toString();
374    }
375
376    public static String JavaDoc getCatalogsQuery() {
377       String JavaDoc query = "Select distinct catalog_name as TABLE_CAT from " + SystemTables.schema_TableName;
378       return query;
379    }
380
381    public static String JavaDoc getColumnsQuery(String JavaDoc catalog, String JavaDoc schemaPattern,
382                                         String JavaDoc tableNamePattern,
383                                         String JavaDoc columnNamePattern) {
384       StringBuffer JavaDoc selectClause = new StringBuffer JavaDoc("select ");
385       selectClause.append(SystemTables.columns_TableName).append(".table_catalog,");
386       selectClause.append(SystemTables.columns_TableName).append(".table_schema ,");
387       selectClause.append(SystemTables.columns_TableName).append(".table_name,");
388       selectClause.append(SystemTables.columns_TableName).append(".column_name,");
389       selectClause.append(SystemTables.dataTypeDescriptor_TableName).append(".data_type,");
390       selectClause.append(SystemTables.dataTypeDescriptor_TableName).append(".numeric_scale,");
391       selectClause.append(SystemTables.dataTypeDescriptor_TableName).append(".numeric_precision_radix,");
392       selectClause.append(SystemTables.columns_TableName).append(".column_default,");
393       selectClause.append(SystemTables.dataTypeDescriptor_TableName).append(".character_maximum_length,");
394       selectClause.append(SystemTables.dataTypeDescriptor_TableName).append(".character_octet_length,");
395       selectClause.append(SystemTables.columns_TableName).append(".ordinal_position,");
396       selectClause.append(SystemTables.columns_TableName).append(".is_nullable,");
397       selectClause.append(SystemTables.dataTypeDescriptor_TableName).append(".numeric_precision,");
398       selectClause.append(SystemTables.dataTypeDescriptor_TableName).append(".datetime_precision,");
399       selectClause.append(SystemTables.dataTypeDescriptor_TableName).append(".interval_precision");
400
401       StringBuffer JavaDoc whereClause = new StringBuffer JavaDoc("");
402       if (catalog != null)
403          whereClause.append("and ").append(SystemTables.columns_TableName)
404              .append( (shouldUseLikePredicate(catalog) ? ".table_catalog Like '" : ".table_catalog = '"))
405              .append(catalog).append("' ");
406       if (schemaPattern != null)
407          whereClause.append("and ").append(SystemTables.columns_TableName)
408              .append( (shouldUseLikePredicate(schemaPattern) ? ".table_schema Like '" : ".table_schema = '"))
409              .append(schemaPattern).append("' ");
410       if (tableNamePattern != null) //to confirm as not mentioned
411
whereClause.append("and ").append(SystemTables.columns_TableName)
412              .append( (shouldUseLikePredicate(tableNamePattern) ? ".table_name Like '" : ".table_name = '"))
413              .append(tableNamePattern).append("' ");
414       if (columnNamePattern != null) //not mentioned
415
whereClause.append("and ").append(SystemTables.columns_TableName)
416              .append( (shouldUseLikePredicate(columnNamePattern) ? ".column_name Like '" : ".column_name = '"))
417              .append(columnNamePattern).append("' ");
418       whereClause.append("and ").append(SystemTables.columns_TableName).append(".column_name != '").append(SystemFieldsInfo.systemFields[SystemFieldsInfo.rowId]).append("' ");
419
420       StringBuffer JavaDoc relation = new StringBuffer JavaDoc();
421       relation.append("and (").append(SystemTables.columns_TableName).append(".table_catalog = ").append(SystemTables.dataTypeDescriptor_TableName).append(".object_catalog and ");
422       relation.append(SystemTables.columns_TableName).append(".table_schema = ").append(SystemTables.dataTypeDescriptor_TableName).append(".object_schema and ");
423       relation.append(SystemTables.columns_TableName).append(".table_name = ").append(SystemTables.dataTypeDescriptor_TableName).append(".object_name and ");
424       relation.append(SystemTables.columns_TableName).append(".dtd_identifier = ").append(SystemTables.dataTypeDescriptor_TableName).append(".dtd_identifier )");
425       whereClause.append(relation.toString());
426
427       StringBuffer JavaDoc orderby = new StringBuffer JavaDoc(" order by ");
428       orderby.append(SystemTables.columns_TableName).append(".table_schema,");
429       orderby.append(SystemTables.columns_TableName).append(".table_name,");
430       orderby.append(SystemTables.columns_TableName).append(".ordinal_position ");
431       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
432       query.append(selectClause.toString());
433       query.append(" from ").append(SystemTables.columns_TableName).append(",").append(SystemTables.dataTypeDescriptor_TableName);
434       query.append(" where ").append(whereClause.substring(4));
435       query.append(orderby.toString());
436       return query.toString();
437    }
438
439    public static String JavaDoc getColumnPrivilegesQuery(String JavaDoc catalog, String JavaDoc schema,
440                                                  String JavaDoc table,
441                                                  String JavaDoc columnNamePattern) {
442       String JavaDoc selectClause = "select table_catalog as TABLE_CAT,table_schema as TABLE_SCHEM,table_name as TABLE_NAME,column_name as COLUMN_NAME,grantor as GRANTOR,grantee as GRANTEE,privilege_type as PRIVILEGE,is_grantable as IS_GRANTABLE";
443       StringBuffer JavaDoc whereClause = new StringBuffer JavaDoc("");
444       if (catalog != null)
445          whereClause.append( (shouldUseLikePredicate(catalog) ? "and table_catalog Like '" : "and table_catalog = '"))
446              .append(catalog).append("' ");
447       if (schema != null)
448          whereClause.append( (shouldUseLikePredicate(schema) ? "and table_schema Like '" : "and table_schema = '"))
449              .append(schema).append("' ");
450       if (table != null)
451          whereClause.append( (shouldUseLikePredicate(table) ? "and table_name Like '" : "and table_name = '"))
452              .append(table).append("' ");
453       if (columnNamePattern != null)
454          whereClause.append( (shouldUseLikePredicate(columnNamePattern) ? "and column_name Like '" : "and column_name = '"))
455              .append(columnNamePattern).append("' ");
456       String JavaDoc orderBy = " order by column_name,privilege_type";
457       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
458       query.append(selectClause);
459       query.append(" from ").append(SystemTables.column_privileges_TableName);
460       String JavaDoc whereStr = whereClause.toString();
461       if (!whereStr.equals(""))
462          query.append(" where ").append(whereStr.substring(4));
463       query.append(orderBy);
464       return query.toString();
465    }
466
467    public static String JavaDoc getTablePrivilegesQuery(String JavaDoc catalog,
468                                                 String JavaDoc schemaPattern,
469                                                 String JavaDoc tableNamePattern) {
470       String JavaDoc selectClause = "select table_catalog as TABLE_CAT,table_schema as TABLE_SCHEM,table_name as TABLE_NAME,grantor as GRANTOR,grantee as GRANTEE,privilege_type as PRIVILEGE,is_grantable as IS_GRANTABLE";
471       StringBuffer JavaDoc whereClause = new StringBuffer JavaDoc("");
472       if (catalog != null)
473          whereClause.append( (shouldUseLikePredicate(catalog) ? "and table_catalog Like '" : "and table_catalog = '"))
474              .append(catalog).append("' ");
475       if (schemaPattern != null)
476          whereClause.append( (shouldUseLikePredicate(schemaPattern) ? "and table_schema Like '" : "and table_schema = '"))
477              .append(schemaPattern).append("' ");
478       if (tableNamePattern != null)
479          whereClause.append( (shouldUseLikePredicate(tableNamePattern) ? "and table_name Like '" : "and table_name = '"))
480              .append(tableNamePattern).append("'");
481       String JavaDoc orderBy = " order by table_schema,table_name,privilege_type";
482       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
483       query.append(selectClause);
484       query.append(" from ").append(SystemTables.table_privileges_TableName);
485       String JavaDoc whereStr = whereClause.toString();
486       if (!whereStr.equals(""))
487          query.append(" where ").append(whereStr.substring(4));
488       query.append(orderBy);
489       return query.toString();
490    }
491
492    public static String JavaDoc getBestRowIdentifierQuery(String JavaDoc catalog, String JavaDoc schema,
493                                                   String JavaDoc table, int scope,
494                                                   boolean nullable) {
495       return null;
496    }
497
498    public static String JavaDoc getVersionColumnsQuery(String JavaDoc catalog, String JavaDoc schema,
499                                                String JavaDoc table) {
500       return null;
501    }
502
503    public static String JavaDoc getPrimaryKeysQuery(String JavaDoc catalog, String JavaDoc schema,
504                                             String JavaDoc table) {
505       StringBuffer JavaDoc selectClause = new StringBuffer JavaDoc("select ");
506       selectClause.append(SystemTables.table_constraints_TableName).append(".table_catalog as TABLE_CAT,");
507       selectClause.append(SystemTables.table_constraints_TableName).append(".table_schema as TABLE_SCHEM,");
508       selectClause.append(SystemTables.table_constraints_TableName).append(".table_name as TABLE_NAME,");
509       selectClause.append(SystemTables.key_column_usage_TableName).append(".column_name as COLUMN_NAME,");
510       selectClause.append(SystemTables.key_column_usage_TableName).append(".ordinal_position as KEY_SEQ,");
511       selectClause.append(SystemTables.table_constraints_TableName).append(".constraint_name as PK_NAME");
512
513       StringBuffer JavaDoc orderBy = new StringBuffer JavaDoc(" order by ");
514       orderBy.append(SystemTables.key_column_usage_TableName).append(".column_name ");
515
516       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
517       query.append(selectClause.toString());
518       query.append(" from ").append(SystemTables.table_constraints_TableName).append(",");
519       query.append(SystemTables.key_column_usage_TableName);
520       String JavaDoc whereStr = getPrimary_OR_Foreign_KeyWhereClause(catalog, schema, table);
521       query.append(" where ");
522       if (!whereStr.equals(""))
523          query.append(whereStr.substring(4)).append(" and ");
524       query.append(getTable_Constraints_And_KeyColumnUsageRelation());
525       query.append(" and ").append(SystemTables.table_constraints_TableName).append(".constraint_type = 'primary key' ");
526       query.append(orderBy.toString());
527       return query.toString();
528    }
529
530    private static String JavaDoc getFromClauseForKeysQuery() {
531       StringBuffer JavaDoc fromClause = new StringBuffer JavaDoc();
532       fromClause.append(SystemTables.table_constraints_TableName).append(" as PTC ,");
533       fromClause.append(SystemTables.key_column_usage_TableName).append(" as PKC ,");
534       fromClause.append(SystemTables.table_constraints_TableName).append(" as FTC ,");
535       fromClause.append(SystemTables.key_column_usage_TableName).append(" as FKC ,");
536       fromClause.append(SystemTables.referential_constraints_TableName).append(" as RC ");
537       return fromClause.toString();
538    }
539
540    static String JavaDoc getSelectColumnsClauseForKeysQuery() {
541       StringBuffer JavaDoc selectClause = new StringBuffer JavaDoc(" select ");
542       selectClause.append("PTC.table_catalog as PKTABLE_CAT,");
543       selectClause.append("PTC.table_schema as PKTABLE_SCHEM ,");
544       selectClause.append("PTC.table_name as PKTABLE_NAME,");
545       selectClause.append("PKC.column_name AS PKCOLUMN_NAME ,");
546       selectClause.append("FTC.TABLE_CATALOG AS FKTABLE_CAT,FTC.TABLE_SCHEMA AS FKTABLE_SCHEM ,FTC.TABLE_NAME AS FKTABLE_NAME,FKC.COLUMN_NAME AS FKCOLUMN_NAME,FKC.ORDINAL_POSITION AS KEY_SEQ,");
547       selectClause.append("RC.update_rule ,");
548       selectClause.append("RC.delete_rule,");
549       selectClause.append("FTC.constraint_name as FK_NAME,");
550       selectClause.append("PTC.constraint_name as PK_NAME,");
551       selectClause.append("PTC.is_deferrable,");
552       selectClause.append("PTC.initially_deferred ");
553       return selectClause.toString();
554    }
555
556
557    static String JavaDoc getPrimaryTableClause() {
558       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
559       query.append(" PTC.CONSTRAINT_CATALOG = PKC.CONSTRAINT_CATALOG ")
560           .append(" AND PTC.CONSTRAINT_SCHEMA = PKC.CONSTRAINT_SCHEMA ")
561           .append(" AND PTC.CONSTRAINT_NAME = PKC.CONSTRAINT_NAME ")
562           .append(" AND PTC.CONSTRAINT_TYPE IN ('PRIMARY KEY' , 'UNIQUE' )");
563       return query.toString();
564    }
565
566    static String JavaDoc getForeignTableClause() {
567       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
568       query.append(" FTC.CONSTRAINT_CATALOG = FKC.CONSTRAINT_CATALOG ")
569           .append(" AND FTC.CONSTRAINT_SCHEMA = FKC.CONSTRAINT_SCHEMA ")
570           .append(" AND FTC.CONSTRAINT_NAME = FKC.CONSTRAINT_NAME ")
571           .append(" AND FTC.CONSTRAINT_TYPE = 'FOREIGN KEY'");
572       return query.toString();
573    }
574
575    static String JavaDoc getPrimaryReferentialClause() {
576       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
577       query.append(" PTC.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG ")
578           .append(" AND PTC.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA ")
579           .append(" AND PTC.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME ");
580       return query.toString();
581    }
582
583    static String JavaDoc getForeignTableReferentialClause() {
584       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
585       query.append(" FTC.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG ")
586           .append(" AND FTC.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA ")
587           .append(" AND FTC.CONSTRAINT_NAME = RC.CONSTRAINT_NAME ");
588       return query.toString();
589    }
590
591    static String JavaDoc getKeyColumnUsageMatchClause() {
592       String JavaDoc query = "(PKC.ORDINAL_POSITION = FKC.ORDINAL_POSITION)";
593       return query;
594    }
595
596    static String JavaDoc getOrderClause() {
597       String JavaDoc query = "order by PTC.TABLE_CATALOG,PTC.TABLE_SCHEMA,PTC.TABLE_NAME";
598       return query;
599    }
600
601    static String JavaDoc getWhereClauseForImportedKeys(String JavaDoc catalog, String JavaDoc schema,
602                                                String JavaDoc table) {
603       StringBuffer JavaDoc clause = new StringBuffer JavaDoc();
604       if (catalog != null)
605          clause.append("and FTC.table_catalog = '").append(catalog).append("' ");
606       if (schema != null)
607          clause.append( (shouldUseLikePredicate(schema) ? "and FTC.table_schema like '" : "and FTC.table_schema = '"))
608              .append(schema).append("' ");
609       if (table != null)
610          clause.append( (shouldUseLikePredicate(table) ? "and FTC.table_name like '" : "and FTC.table_name = '"))
611              .append(table).append("' ");
612       return clause.toString();
613    }
614
615    public static String JavaDoc getImportedKeysQuery(String JavaDoc catalog, String JavaDoc schema,
616                                              String JavaDoc table) {
617       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
618       query.append(getSelectColumnsClauseForKeysQuery());
619       query.append(" from ").append(getFromClauseForKeysQuery()).append(" where ");
620       String JavaDoc whereClause = getWhereClauseForImportedKeys(catalog, schema, table);
621       if (!whereClause.equals("")) {
622          query.append(whereClause.substring(4));
623          query.append(" and ");
624       }
625       query.append(getPrimaryTableClause());
626       query.append(" and ");
627       query.append(getForeignTableClause());
628       query.append(" and ");
629       query.append(getPrimaryReferentialClause());
630       query.append(" and ");
631       query.append(getForeignTableReferentialClause());
632       query.append(" and ");
633       query.append(getKeyColumnUsageMatchClause());
634       query.append(getOrderClause());
635       return query.toString();
636    }
637
638    static String JavaDoc getWhereClauseForExportedKeys(String JavaDoc catalog, String JavaDoc schema,
639                                                String JavaDoc table) {
640       StringBuffer JavaDoc clause = new StringBuffer JavaDoc();
641       if (catalog != null)
642          clause.append("and PTC.table_catalog = '").append(catalog).append("' ");
643       if (schema != null)
644          clause.append( (shouldUseLikePredicate(schema) ? "and PTC.table_schema like '" : "and PTC.table_schema = '"))
645              .append(schema).append("' ");
646       if (table != null)
647          clause.append( (shouldUseLikePredicate(table) ? "and PTC.table_name like '" : "and PTC.table_name = '"))
648              .append(table).append("' ");
649       return clause.toString();
650    }
651
652    public static String JavaDoc getExportedKeysQuery(String JavaDoc catalog, String JavaDoc schema,
653                                              String JavaDoc table) {
654       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
655       query.append(getSelectColumnsClauseForKeysQuery());
656       query.append(" from ").append(getFromClauseForKeysQuery()).append(" where ");
657       String JavaDoc whereClause = getWhereClauseForExportedKeys(catalog, schema, table);
658       if (!whereClause.equals("")) {
659          query.append(whereClause.substring(4));
660          query.append(" and ");
661       }
662       query.append(getPrimaryTableClause());
663       query.append(" and ");
664       query.append(getForeignTableClause());
665       query.append(" and ");
666       query.append(getPrimaryReferentialClause());
667       query.append(" and ");
668       query.append(getForeignTableReferentialClause());
669       query.append(" and ");
670       query.append(getKeyColumnUsageMatchClause());
671       query.append(getOrderClause());
672       return query.toString();
673    }
674
675    public static String JavaDoc getCrossReferenceQuery(String JavaDoc primaryCatalog,
676                                                String JavaDoc primarySchema,
677                                                String JavaDoc primaryTable,
678                                                String JavaDoc foreignCatalog,
679                                                String JavaDoc foreignSchema,
680                                                String JavaDoc foreignTable) {
681       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
682       query.append(getSelectColumnsClauseForKeysQuery());
683       query.append(" from ").append(getFromClauseForKeysQuery()).append(" where ");
684       String JavaDoc exportedKeysWhereClause = getWhereClauseForExportedKeys(primaryCatalog, primarySchema, primaryTable);
685       if (!exportedKeysWhereClause.equals("")) {
686          query.append(exportedKeysWhereClause.substring(4));
687          query.append(" and ");
688       }
689       String JavaDoc importedKeysWhereClause = getWhereClauseForImportedKeys(foreignCatalog, foreignSchema, foreignTable);
690       if (!importedKeysWhereClause.equals("")) {
691          query.append(importedKeysWhereClause.substring(4));
692          query.append(" and ");
693       }
694       query.append(getPrimaryTableClause());
695       query.append(" and ");
696       query.append(getForeignTableClause());
697       query.append(" and ");
698       query.append(getPrimaryReferentialClause());
699       query.append(" and ");
700       query.append(getForeignTableReferentialClause());
701       query.append(" and ");
702       query.append(getKeyColumnUsageMatchClause());
703       query.append(getOrderClause());
704       return query.toString();
705    }
706
707    static String JavaDoc getForeign_Referential_Constaints_table_Relation() {
708       StringBuffer JavaDoc relationClause = new StringBuffer JavaDoc();
709       relationClause.append(SystemTables.referential_constraints_TableName).
710           append(".unique_constraint_catalog = FOREIGNTABLE.FKT_CAT and ");
711       relationClause.append(SystemTables.referential_constraints_TableName).
712           append(".unique_constraint_schema = FOREIGNTABLE.FKT_SCHEM and ");
713       relationClause.append(SystemTables.referential_constraints_TableName).
714           append(".unique_constraint_name = FOREIGNTABLE.FK_NAME and ");
715       relationClause.append(SystemTables.key_column_usage_TableName).append(
716           ".ordinal_position = FOREIGNTABLE.KEY_SEQ");
717       return relationClause.toString();
718    }
719
720    static String JavaDoc getTable_Constraints_And_KeyColumnUsageRelation() {
721       StringBuffer JavaDoc relationClause = new StringBuffer JavaDoc();
722       relationClause.append(SystemTables.table_constraints_TableName).append(
723           ".constraint_catalog = ").append(SystemTables.
724                                            key_column_usage_TableName).append(
725           ".constraint_catalog and ");
726       relationClause.append(SystemTables.table_constraints_TableName).append(
727           ".constraint_schema = ").append(SystemTables.key_column_usage_TableName).
728           append(".constraint_schema and ");
729       relationClause.append(SystemTables.table_constraints_TableName).append(
730           ".constraint_name = ").append(SystemTables.key_column_usage_TableName).
731           append(".constraint_name ");
732       return relationClause.toString();
733    }
734
735    static String JavaDoc getReferential_Constraints_And_KeyColumnUsageRelation() {
736       StringBuffer JavaDoc relationClause = new StringBuffer JavaDoc();
737       relationClause.append(SystemTables.referential_constraints_TableName).
738           append(".constraint_catalog = ").append(SystemTables.
739                                                   key_column_usage_TableName).
740           append(".constraint_catalog and ");
741       relationClause.append(SystemTables.referential_constraints_TableName).
742           append(".constraint_schema = ").append(SystemTables.
743                                                  key_column_usage_TableName).
744           append(".constraint_schema and ");
745       relationClause.append(SystemTables.referential_constraints_TableName).
746           append(".constraint_name = ").append(SystemTables.
747                                                key_column_usage_TableName).append(
748           ".constraint_name ");
749       return relationClause.toString();
750    }
751
752    static String JavaDoc getFromClause(String JavaDoc foreignCatalog, String JavaDoc foreignSchema,
753                                String JavaDoc foreignTable, boolean chekCondiiton) {
754       StringBuffer JavaDoc from = new StringBuffer JavaDoc();
755       from.append(" from ").append(SystemTables.table_constraints_TableName).append(",");
756       from.append(SystemTables.key_column_usage_TableName).append(",");
757       from.append(SystemTables.referential_constraints_TableName).append(",");
758       from.append(" (").append(chekCondiiton ? getForeignKeyClause(foreignCatalog, foreignSchema, foreignTable) : getForeignKeyClause()).append(") ").append(" as FOREIGNTABLE ");
759       return from.toString();
760    }
761
762    static String JavaDoc getForeignKeyClause() {
763       StringBuffer JavaDoc foreignKeyClause = new StringBuffer JavaDoc();
764       foreignKeyClause.append(getForeignKeySelectClauseWithFrom());
765       foreignKeyClause.append(" where ").append(
766           getTable_Constraints_And_KeyColumnUsageRelation());
767       return foreignKeyClause.toString();
768
769    }
770
771    static String JavaDoc getForeignKeyClause(String JavaDoc foreignCatalog, String JavaDoc foreignSchema,
772                                      String JavaDoc foreignTable) {
773       StringBuffer JavaDoc foreignKeyClause = new StringBuffer JavaDoc();
774       foreignKeyClause.append(getForeignKeySelectClauseWithFrom());
775       String JavaDoc whereStr = getPrimary_OR_Foreign_KeyWhereClause(foreignCatalog, foreignSchema, foreignTable);
776       foreignKeyClause.append(" where ");
777       if (!whereStr.equals(""))
778          foreignKeyClause.append(whereStr.substring(4)).append(" and ");
779       foreignKeyClause.append(" (").append(getTable_Constraints_And_KeyColumnUsageRelation()).append(" )");
780       return foreignKeyClause.toString();
781    }
782
783    static String JavaDoc getForeignKeySelectClauseWithFrom() {
784       StringBuffer JavaDoc selectClause = new StringBuffer JavaDoc(" select ");
785       selectClause.append(SystemTables.table_constraints_TableName).append(
786           ".constraint_catalog as FKT_CAT,");
787       selectClause.append(SystemTables.table_constraints_TableName).append(
788           ".constraint_schema as FKT_SCHEM,");
789       selectClause.append(SystemTables.table_constraints_TableName).append(
790           ".constraint_name as FK_NAME,");
791       selectClause.append(SystemTables.table_constraints_TableName).append(
792           ".table_catalog as FKTABLE_CAT,");
793       selectClause.append(SystemTables.table_constraints_TableName).append(
794           ".table_schema as FKTABLE_SCHEM,");
795       selectClause.append(SystemTables.table_constraints_TableName).append(
796           ".table_name as FKTABLE_NAME,");
797       selectClause.append(SystemTables.key_column_usage_TableName).append(
798           ".column_name as FKCOLUMN_NAME,");
799       selectClause.append(SystemTables.key_column_usage_TableName).append(
800           ".ordinal_position as KEY_SEQ");
801       selectClause.append(" from ").append(SystemTables.
802                                            table_constraints_TableName).append(
803           ",").append(SystemTables.key_column_usage_TableName);
804       return selectClause.toString();
805    }
806
807    static String JavaDoc getPrimaryAndForeignKeySelectClause() {
808       StringBuffer JavaDoc selectClause = new StringBuffer JavaDoc(" select ");
809       selectClause.append(SystemTables.table_constraints_TableName).append(
810           ".table_catalog,");
811       selectClause.append(SystemTables.table_constraints_TableName).append(
812           ".table_schema,");
813       selectClause.append(SystemTables.table_constraints_TableName).append(
814           ".table_name,");
815       selectClause.append(SystemTables.key_column_usage_TableName).append(
816           ".column_name,");
817       selectClause.append("FOREIGNTABLE.FKTABLE_CAT,FOREIGNTABLE.FKTABLE_SCHEM as FKTABLE_SCHEM,FOREIGNTABLE.FKTABLE_NAME as FKTABLE_NAME,FOREIGNTABLE.FKCOLUMN_NAME as FKCOLUMN_NAME,FOREIGNTABLE.KEY_SEQ as KEY_SEQ,");
818       selectClause.append(SystemTables.referential_constraints_TableName).append(
819           ".update_rule,");
820       selectClause.append(SystemTables.referential_constraints_TableName).append(
821           ".delete_rule,");
822       selectClause.append(SystemTables.table_constraints_TableName).append(
823           ".constraint_name,");
824       selectClause.append("FOREIGNTABLE.FK_NAME as FK_NAME,");
825       selectClause.append(SystemTables.table_constraints_TableName).append(
826           ".is_deferrable,");
827       selectClause.append(SystemTables.table_constraints_TableName).append(
828           ".initially_deferred ");
829       return selectClause.toString();
830    }
831
832    static String JavaDoc getPrimary_OR_Foreign_KeyWhereClause(String JavaDoc catalog,
833        String JavaDoc schema, String JavaDoc table) {
834       StringBuffer JavaDoc foreignKeyWhereClause = new StringBuffer JavaDoc("");
835       if (catalog != null)
836          foreignKeyWhereClause.append("and ").append(SystemTables.table_constraints_TableName)
837              .append( (shouldUseLikePredicate(catalog) ? ".table_catalog Like '" : ".table_catalog = '"))
838              .append(catalog).append("' ");
839       if (schema != null)
840          foreignKeyWhereClause.append("and ").append(SystemTables.table_constraints_TableName)
841              .append( (shouldUseLikePredicate(schema) ? ".table_schema Like '" : ".table_schema = '"))
842              .append(schema).append("' ");
843       if (table != null)
844          foreignKeyWhereClause.append("and ").append(SystemTables.table_constraints_TableName)
845              .append( (shouldUseLikePredicate(table) ? ".table_name Like '" : ".table_name = '"))
846              .append(table).append("' ");
847       return foreignKeyWhereClause.toString();
848    }
849
850    public static String JavaDoc getTypeInfoQuery() {
851       return null;
852    }
853
854    public static String JavaDoc getIndexInfoQuery(String JavaDoc catalog, String JavaDoc schema,
855                                           String JavaDoc table,
856                                           boolean unique, boolean approximate) {
857       StringBuffer JavaDoc selectClause = new StringBuffer JavaDoc("select ");
858       selectClause.append(SystemTables.INDEXINFO).append(".table_catalog,");
859       selectClause.append(SystemTables.INDEXINFO).append(".table_schema ,");
860       selectClause.append(SystemTables.INDEXINFO).append(".table_name,");
861       selectClause.append(SystemTables.INDEXINFO).append(".indexname,");
862       selectClause.append(SystemTables.INDEXCOLUMNS).append(".ordinal_position,");
863       selectClause.append(SystemTables.INDEXCOLUMNS).append(".column_name,");
864       selectClause.append(SystemTables.INDEXCOLUMNS).append(".ordertype ");
865       StringBuffer JavaDoc whereClause = new StringBuffer JavaDoc("");
866       whereClause.append(" is_system_generated = False ");
867       if (catalog != null)
868          whereClause.append("and ").append(SystemTables.INDEXINFO)
869              .append( (shouldUseLikePredicate(catalog) ? ".table_catalog Like '" : ".table_catalog = '"))
870              .append(catalog).append("' ");
871       if (schema != null)
872          whereClause.append("and ").append(SystemTables.INDEXINFO)
873              .append( (shouldUseLikePredicate(schema) ? ".table_schema Like '" : ".table_schema = '"))
874              .append(schema).append("' ");
875       if (table != null) //to confirm as not mentioned
876
whereClause.append("and ").append(SystemTables.INDEXINFO)
877              .append( (shouldUseLikePredicate(table) ? ".table_name Like '" : ".table_name = '"))
878              .append(table).append("' ");
879
880       StringBuffer JavaDoc relation = new StringBuffer JavaDoc();
881       relation.append("and (").append(SystemTables.INDEXINFO).append(".table_catalog = ").append(SystemTables.INDEXCOLUMNS).append(".table_catalog and ");
882       relation.append(SystemTables.INDEXINFO).append(".table_schema = ").append(SystemTables.INDEXCOLUMNS).append(".table_schema and ");
883       relation.append(SystemTables.INDEXINFO).append(".table_name = ").append(SystemTables.INDEXCOLUMNS).append(".table_name and ");
884       relation.append(SystemTables.INDEXINFO).append(".indexname = ").append(SystemTables.INDEXCOLUMNS).append(".indexname )");
885       whereClause.append(relation.toString());
886
887       StringBuffer JavaDoc orderby = new StringBuffer JavaDoc(" order by ");
888       orderby.append(SystemTables.INDEXINFO).append(".indexname,");
889       orderby.append(SystemTables.INDEXCOLUMNS).append(".ordinal_position ");
890       StringBuffer JavaDoc query = new StringBuffer JavaDoc();
891       query.append(selectClause.toString());
892       query.append(" from ").append(SystemTables.INDEXINFO).append(",").append(SystemTables.INDEXCOLUMNS);
893       query.append(" where ").append(whereClause.substring(0));
894       query.append(orderby.toString());
895       return query.toString();
896    }
897
898    public static String JavaDoc getUDTsQuery(String JavaDoc catalog, String JavaDoc schemaPattern,
899                                      String JavaDoc typeNamePattern, int[] types) {
900       return null;
901    }
902
903    public static String JavaDoc getSuperTypesQuery(String JavaDoc catalog, String JavaDoc schemaPattern,
904                                            String JavaDoc typeNamePattern) {
905       return null;
906    }
907
908    public static String JavaDoc getSuperTablesQuery(String JavaDoc catalog, String JavaDoc schemaPattern,
909                                             String JavaDoc tableNamePattern) {
910       return null;
911    }
912
913    private static boolean shouldUseLikePredicate(String JavaDoc query) {
914       return query.indexOf("%") != -1 || query.indexOf("_") != -1;
915    }
916 }
917
Popular Tags