Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-10-20 14:19:46 +0000
committerEike Stepper2007-10-20 14:19:46 +0000
commitb4be229539f34f66bf12edb23dab8e6cf68e3222 (patch)
tree08df4877229f223fc50132392a3b0d90a810bbc5 /plugins/org.eclipse.net4j.db
parent911af402233546677f27b8116db84b856b9a66d2 (diff)
downloadcdo-b4be229539f34f66bf12edb23dab8e6cf68e3222.tar.gz
cdo-b4be229539f34f66bf12edb23dab8e6cf68e3222.tar.xz
cdo-b4be229539f34f66bf12edb23dab8e6cf68e3222.zip
[206979] Add Hsqldb adapter
https://bugs.eclipse.org/bugs/show_bug.cgi?id=206979
Diffstat (limited to 'plugins/org.eclipse.net4j.db')
-rw-r--r--plugins/org.eclipse.net4j.db/reserved_words/Copy of ansi.txt231
-rw-r--r--plugins/org.eclipse.net4j.db/reserved_words/mysql.txt229
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java50
3 files changed, 265 insertions, 245 deletions
diff --git a/plugins/org.eclipse.net4j.db/reserved_words/Copy of ansi.txt b/plugins/org.eclipse.net4j.db/reserved_words/Copy of ansi.txt
deleted file mode 100644
index ff5665611e..0000000000
--- a/plugins/org.eclipse.net4j.db/reserved_words/Copy of ansi.txt
+++ /dev/null
@@ -1,231 +0,0 @@
-ABSOLUTE
-ACTION
-ADD
-ALL
-ALLOCATE
-ALTER
-AND
-ANY
-ARE
-AS
-ASC
-ASSERTION
-AT
-AUTHORIZATION
-AVG
-BEGIN
-BETWEEN
-BIT
-BIT_LENGTH
-BOTH
-BY
-CASCADE
-CASCADED
-CASE
-CAST
-CATALOG
-CHAR
-CHARACTER
-CHAR_
-LENGTH
-CHARACTER_LENGTH
-CHECK
-CLOSE
-COALESCE
-COLLATE
-COLLATION
-COLUMN
-COMMIT
-CONNECT
-CONNECTION
-CONSTRAINT
-CONSTRAINTS
-CONTINUE
-CONVERT
-CORRESPONDING
-COUNT
-CREATE
-CROSS
-CURRENT
-CURRENT_DATE
-CURRENT_TIME
-CURRENT_TIMESTAMP
-CURRENT_
-USER
-CURSOR
-DATE
-DAY
-DEALLOCATE
-DEC
-DECIMAL
-DECLARE
-DEFAULT
-DEFERRABLE
-DEFERRED
-DELETE
-DESC
-DESCRIBE
-DESCRIPTOR
-DIAGNOSTICS
-DISCONNECT
-DISTINCT
-DOMAIN
-DOUBLE
-DROP
-ELSE
-END
-END-EXEC
-ESCAPE
-EXCEPT
-EXCEPTION
-EXEC
-EXECUTE
-EXISTS
-EXTERNAL
-EXTRACT
-FALSE
-FETCH
-FIRST
-FLOAT
-FOR
-FOREIGN
-FOUND
-FROM
-FULL
-GET
-GLOBAL
-GO
-GOTO
-GRANT
-GROUP
-HAVING
-HOUR
-IDENTITY
-IMMEDIATE
-IN
-INDICATOR
-INITIALLY
-INNER
-INPUT
-INSENSITIVE
-INSERT
-INT
-INTEGER
-INTERSECT
-INTERVAL
-INTO
-IS
-ISOLATION
-JOIN
-KEY
-LANGUAGE
-LAST
-LEADING
-LEFT
-LEVEL
-LIKE
-LOCAL
-LOWER
-MATCH
-MAX
-MIN
-MINUTE
-MODULE
-MONTH
-NAMES
-NATIONAL
-NATURAL
-NCHAR
-NEXT
-NO
-NOT
-NULL
-NULLIF
-NUMERIC
-OCTET_LENGTH
-OF
-ON
-ONLY
-OPEN
-OPTION
-OR
-ORDER
-OUTER
-OUTPUT
-OVERLAPS
-PAD
-PARTIAL
-POSITION
-PRECISION
-PREPARE
-PRESERVE
-PRIMARY
-PRIOR
-PRIVILEGES
-PROCEDURE
-PUBLIC
-READ
-REAL
-REFERENCES
-RELATIVE
-RESTRICT
-REVOKE
-RIGHT
-ROLLBACK
-ROWS
-SCHEMA
-SCROLL
-SECOND
-SECTION
-SELECT
-SESSION
-SESSION_
-USER
-SET
-SIZE
-SMALLINT
-SOME
-SPACE
-SQL
-SQLCODE
-SQLERROR
-SQLSTATE
-SUBSTRING
-SUM
-SYSTEM_USER
-TABLE
-TEMPORARY
-THEN
-TIME
-TIMESTAMP
-TIMEZONE_
-HOUR
-TIMEZONE_MINUTE
-TO
-TRAILING
-TRANSACTION
-TRANSLATE
-TRANSLATION
-TRIM
-TRUE
-UNION
-UNIQUE
-UNKNOWN
-UPDATE
-UPPER
-USAGE
-USER
-USING
-VALUE
-VALUES
-VARCHAR
-VARYING
-VIEW
-WHEN
-WHENEVER
-WHERE
-WITH
-WORK
-WRITE
-YEAR
-ZONE
diff --git a/plugins/org.eclipse.net4j.db/reserved_words/mysql.txt b/plugins/org.eclipse.net4j.db/reserved_words/mysql.txt
new file mode 100644
index 0000000000..94dce4cf69
--- /dev/null
+++ b/plugins/org.eclipse.net4j.db/reserved_words/mysql.txt
@@ -0,0 +1,229 @@
+ACTION
+ADD
+ALL
+ALTER
+ANALYZE
+AND
+AS
+ASC
+ASENSITIVE
+BEFORE
+BETWEEN
+BIGINT
+BINARY
+BIT
+BLOB
+BOTH
+BY
+CALL
+CASCADE
+CASE
+CHANGE
+CHAR
+CHARACTER
+CHECK
+COLLATE
+COLUMN
+CONDITION
+CONSTRAINT
+CONTINUE
+CONVERT
+CREATE
+CROSS
+CURRENT_DATE
+CURRENT_TIME
+CURRENT_TIMESTAMP
+CURRENT_USER
+CURSOR
+DATABASE
+DATABASES
+DATE
+DAY_HOUR
+DAY_MICROSECOND
+DAY_MINUTE
+DAY_SECOND
+DEC
+DECIMAL
+DECLARE
+DEFAULT
+DELAYED
+DELETE
+DESC
+DESCRIBE
+DETERMINISTIC
+DISTINCT
+DISTINCTROW
+DIV
+DOUBLE
+DROP
+DUAL
+EACH
+ELSE
+ELSEIF
+ENCLOSED
+ENUM
+ESCAPED
+EXISTS
+EXIT
+EXPLAIN
+FALSE
+FETCH
+FLOAT
+FLOAT4
+FLOAT8
+FOR
+FORCE
+FOREIGN
+FROM
+FULLTEXT
+GRANT
+GROUP
+HAVING
+HIGH_PRIORITY
+HOUR_MICROSECOND
+HOUR_MINUTE
+HOUR_SECOND
+IF
+IGNORE
+IN
+INDEX
+INFILE
+INNER
+INOUT
+INSENSITIVE
+INSERT
+INT
+INT1
+INT2
+INT3
+INT4
+INT8
+INTEGER
+INTERVAL
+INTO
+IS
+ITERATE
+JOIN
+KEY
+KEYS
+KILL
+LEADING
+LEAVE
+LEFT
+LIKE
+LIMIT
+LINES
+LOAD
+LOCALTIME
+LOCALTIMESTAMP
+LOCK
+LONG
+LONGBLOB
+LONGTEXT
+LOOP
+LOW_PRIORITY
+MATCH
+MEDIUMBLOB
+MEDIUMINT
+MEDIUMTEXT
+MIDDLEINT
+MINUTE_MICROSECOND
+MINUTE_SECOND
+MOD
+MODIFIES
+NATURAL
+NO
+NOT
+NO_WRITE_TO_BINLOG
+NULL
+NUMERIC
+ON
+OPTIMIZE
+OPTION
+OPTIONALLY
+OR
+ORDER
+OUT
+OUTER
+OUTFILE
+PRECISION
+PRIMARY
+PROCEDURE
+PURGE
+RAID0
+READ
+READS
+REAL
+REFERENCES
+REGEXP
+RELEASE
+RENAME
+REPEAT
+REPLACE
+REQUIRE
+RESTRICT
+RETURN
+REVOKE
+RIGHT
+RLIKE
+SCHEMA
+SCHEMAS
+SECOND_MICROSECOND
+SELECT
+SENSITIVE
+SEPARATOR
+SET
+SHOW
+SMALLINT
+SONAME
+SPATIAL
+SPECIFIC
+SQL
+SQLEXCEPTION
+SQLSTATE
+SQLWARNING
+SQL_BIG_RESULT
+SQL_CALC_FOUND_ROWS
+SQL_SMALL_RESULT
+SSL
+STARTING
+STRAIGHT_JOIN
+TABLE
+TERMINATED
+TEXT
+THEN
+TIME
+TIMESTAMP
+TINYBLOB
+TINYINT
+TINYTEXT
+TO
+TRAILING
+TRIGGER
+TRUE
+UNDO
+UNION
+UNIQUE
+UNLOCK
+UNSIGNED
+UPDATE
+USAGE
+USE
+USING
+UTC_DATE
+UTC_TIME
+UTC_TIMESTAMP
+VALUES
+VARBINARY
+VARCHAR
+VARCHARACTER
+VARYING
+WHEN
+WHERE
+WHILE
+WITH
+WRITE
+X509
+XOR
+YEAR_MONTH
+ZEROFILL
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java
index 873054449d..4b2137a16c 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java
@@ -25,6 +25,7 @@ import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@@ -35,6 +36,40 @@ public abstract class DBAdapter implements IDBAdapter
{
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_SQL, DBAdapter.class);
+ private static final String[] RESERVED_WORDS = { "ABSOLUTE", "ACTION", "ADD", "AFTER", "ALL", "ALLOCATE", "ALTER",
+ "AND", "ANY", "ARE", "ARRAY", "AS", "ASC", "ASENSITIVE", "ASSERTION", "ASYMMETRIC", "AT", "ATOMIC",
+ "AUTHORIZATION", "AVG", "BEFORE", "BEGIN", "BETWEEN", "BIGINT", "BINARY", "BIT", "BIT_LENGTH", "BLOB", "BOOLEAN",
+ "BOTH", "BREADTH", "BY", "CALL", "CALLED", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG", "CHAR", "CHARACTER",
+ "CHARACTER_LENGTH", "CHAR_LENGTH", "CHECK", "CLOB", "CLOSE", "COALESCE", "COLLATE", "COLLATION", "COLUMN",
+ "COMMIT", "CONDITION", "CONNECT", "CONNECTION", "CONSTRAINT", "CONSTRAINTS", "CONSTRUCTOR", "CONTAINS",
+ "CONTINUE", "CONVERT", "CORRESPONDING", "COUNT", "CREATE", "CROSS", "CUBE", "CURRENT", "CURRENT_DATE",
+ "CURRENT_DEFAULT_TRANSFORM_GROUP", "CURRENT_PATH", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP",
+ "CURRENT_TRANSFORM_GROUP_FOR_TYPE", "CURRENT_USER", "CURSOR", "CYCLE", "DATA", "DATE", "DAY", "DEALLOCATE",
+ "DEC", "DECIMAL", "DECLARE", "DEFAULT", "DEFERRABLE", "DEFERRED", "DELETE", "DEPTH", "DEREF", "DESC", "DESCRIBE",
+ "DESCRIPTOR", "DETERMINISTIC", "DIAGNOSTICS", "DISCONNECT", "DISTINCT", "DO", "DOMAIN", "DOUBLE", "DROP",
+ "DYNAMIC", "EACH", "ELEMENT", "ELSE", "ELSEIF", "END", "EQUALS", "ESCAPE", "EXCEPT", "EXCEPTION", "EXEC",
+ "EXECUTE", "EXISTS", "EXIT", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", "FILTER", "FIRST", "FLOAT", "FOR",
+ "FOREIGN", "FOUND", "FREE", "FROM", "FULL", "FUNCTION", "GENERAL", "GET", "GLOBAL", "GO", "GOTO", "GRANT",
+ "GROUP", "GROUPING", "HANDLER", "HAVING", "HOLD", "HOUR", "IDENTITY", "IF", "IMMEDIATE", "IN", "INDICATOR",
+ "INITIALLY", "INNER", "INOUT", "INPUT", "INSENSITIVE", "INSERT", "INT", "INTEGER", "INTERSECT", "INTERVAL",
+ "INTO", "IS", "ISOLATION", "ITERATE", "JOIN", "KEY", "LANGUAGE", "LARGE", "LAST", "LATERAL", "LEADING", "LEAVE",
+ "LEFT", "LEVEL", "LIKE", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", "LOCATOR", "LOOP", "LOWER", "MAP", "MATCH",
+ "MAX", "MEMBER", "MERGE", "METHOD", "MIN", "MINUTE", "MODIFIES", "MODULE", "MONTH", "MULTISET", "NAMES",
+ "NATIONAL", "NATURAL", "NCHAR", "NCLOB", "NEW", "NEXT", "NO", "NONE", "NOT", "NULL", "NULLIF", "NUMERIC",
+ "OBJECT", "OCTET_LENGTH", "OF", "OLD", "ON", "ONLY", "OPEN", "OPTION", "OR", "ORDER", "ORDINALITY", "OUT",
+ "OUTER", "OUTPUT", "OVER", "OVERLAPS", "PAD", "PARAMETER", "PARTIAL", "PARTITION", "PATH", "POSITION",
+ "PRECISION", "PREPARE", "PRESERVE", "PRIMARY", "PRIOR", "PRIVILEGES", "PROCEDURE", "PUBLIC", "RANGE", "READ",
+ "READS", "REAL", "RECURSIVE", "REF", "REFERENCES", "REFERENCING", "RELATIVE", "RELEASE", "REPEAT", "RESIGNAL",
+ "RESTRICT", "RESULT", "RETURN", "RETURNS", "REVOKE", "RIGHT", "ROLE", "ROLLBACK", "ROLLUP", "ROUTINE", "ROW",
+ "ROWS", "SAVEPOINT", "SCHEMA", "SCOPE", "SCROLL", "SEARCH", "SECOND", "SECTION", "SELECT", "SENSITIVE",
+ "SESSION", "SESSION_USER", "SET", "SETS", "SIGNAL", "SIMILAR", "SIZE", "SMALLINT", "SOME", "SPACE", "SPECIFIC",
+ "SPECIFICTYPE", "SQL", "SQLCODE", "SQLERROR", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "START", "STATE",
+ "STATIC", "SUBMULTISET", "SUBSTRING", "SUM", "SYMMETRIC", "SYSTEM", "SYSTEM_USER", "TABLE", "TABLESAMPLE",
+ "TEMPORARY", "THEN", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TO", "TRAILING", "TRANSACTION",
+ "TRANSLATE", "TRANSLATION", "TREAT", "TRIGGER", "TRIM", "TRUE", "UNDER", "UNDO", "UNION", "UNIQUE", "UNKNOWN",
+ "UNNEST", "UNTIL", "UPDATE", "UPPER", "USAGE", "USER", "USING", "VALUE", "VALUES", "VARCHAR", "VARYING", "VIEW",
+ "WHEN", "WHENEVER", "WHERE", "WHILE", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRITE", "YEAR", "ZONE" };
+
private String name;
private String version;
@@ -266,7 +301,7 @@ public abstract class DBAdapter implements IDBAdapter
protected boolean isReservedWord(String word)
{
- return false;
+ return Arrays.binarySearch(RESERVED_WORDS, word.toUpperCase()) >= 0;
}
protected void validateTable(DBTable table, Statement statement) throws DBException
@@ -288,19 +323,6 @@ public abstract class DBAdapter implements IDBAdapter
throw new DBException("DBTable " + table + " has " + columnCount + " columns instead of "
+ table.getFieldCount());
}
-
- // for (int i = 0; i < columnCount; i++)
- // {
- // int existingCode = metaData.getColumnType(i + 1);
- // DBField field = table.getField(i);
- // int code = field.getType().getCode();
- // if (code != existingCode)
- // {
- // throw new DBException("DBField " + field.getFullName() + " has type " +
- // existingCode + " instead of " + code
- // + " (" + field.getType() + ")");
- // }
- // }
}
catch (SQLException ex)
{

Back to the top