Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-08-17 11:17:43 +0000
committerEike Stepper2007-08-17 11:17:43 +0000
commit83bde01e1debbc28ada1db52b28858a0c576223a (patch)
tree187e4f54da0ac5272259484c76d428930e118cc9 /plugins/org.eclipse.net4j.db
parentb970d76bc01183a792d9e1ccfb17e1dc7e9316f2 (diff)
downloadcdo-83bde01e1debbc28ada1db52b28858a0c576223a.tar.gz
cdo-83bde01e1debbc28ada1db52b28858a0c576223a.tar.xz
cdo-83bde01e1debbc28ada1db52b28858a0c576223a.zip
*** empty log message ***
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/derby.txt208
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBAdapter.java45
3 files changed, 480 insertions, 4 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
new file mode 100644
index 0000000000..ff5665611e
--- /dev/null
+++ b/plugins/org.eclipse.net4j.db/reserved_words/Copy of ansi.txt
@@ -0,0 +1,231 @@
+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/derby.txt b/plugins/org.eclipse.net4j.db/reserved_words/derby.txt
new file mode 100644
index 0000000000..fe7e130044
--- /dev/null
+++ b/plugins/org.eclipse.net4j.db/reserved_words/derby.txt
@@ -0,0 +1,208 @@
+ADD
+ALL
+ALLOCATE
+ALTER
+AND
+ANY
+ARE
+AS
+ASC
+ASSERTION
+AT
+AUTHORIZATION
+AVG
+BEGIN
+BETWEEN
+BIGINT
+BIT
+BOOLEAN
+BOTH
+BY
+CALL
+CASCADE
+CASCADED
+CASE
+CAST
+CHAR
+CHARACTER
+CHECK
+CLOSE
+COALESCE
+COLLATE
+COLLATION
+COLUMN
+COMMIT
+CONNECT
+CONNECTION
+CONSTRAINT
+CONSTRAINTS
+CONTINUE
+CONVERT
+CORRESPONDING
+CREATE
+CURRENT
+CURRENT_DATE
+CURRENT_TIME
+CURRENT_TIMESTAMP
+CURRENT_USER
+CURSOR
+DEALLOCATE
+DEC
+DECIMAL
+DECLARE
+DEFAULT
+DEFERRABLE
+DEFERRED
+DELETE
+DESC
+DESCRIBE
+DIAGNOSTICS
+DISCONNECT
+DISTINCT
+DOUBLE
+DROP
+ELSE
+END
+END-EXEC
+ESCAPE
+EXCEPT
+EXCEPTION
+EXEC
+EXECUTE
+EXISTS
+EXPLAIN
+EXTERNAL
+FALSE
+FETCH
+FIRST
+FLOAT
+FOR
+FOREIGN
+FOUND
+FROM
+FULL
+FUNCTION
+GET
+GETCURRENTCONNECTION
+GLOBAL
+GO
+GOTO
+GRANT
+GROUP
+HAVING
+HOUR
+IDENTITY
+IMMEDIATE
+IN
+INDICATOR
+INITIALLY
+INNER
+INOUT
+INPUT
+INSENSITIVE
+INSERT
+INT
+INTEGER
+INTERSECT
+INTO
+IS
+ISOLATION
+JOIN
+KEY
+LAST
+LEFT
+LIKE
+LOWER
+LTRIM
+MATCH
+MAX
+MIN
+MINUTE
+NATIONAL
+NATURAL
+NCHAR
+NVARCHAR
+NEXT
+NO
+NOT
+NULL
+NULLIF
+NUMERIC
+OF
+ON
+ONLY
+OPEN
+OPTION
+OR
+ORDER
+OUTER
+OUTPUT
+OVERLAPS
+PAD
+PARTIAL
+PREPARE
+PRESERVE
+PRIMARY
+PRIOR
+PRIVILEGES
+PROCEDURE
+PUBLIC
+READ
+REAL
+REFERENCES
+RELATIVE
+RESTRICT
+REVOKE
+RIGHT
+ROLLBACK
+ROWS
+RTRIM
+SCHEMA
+SCROLL
+SECOND
+SELECT
+SESSION_USER
+SET
+SMALLINT
+SOME
+SPACE
+SQL
+SQLCODE
+SQLERROR
+SQLSTATE
+SUBSTR
+SUBSTRING
+SUM
+SYSTEM_USER
+TABLE
+TEMPORARY
+TIMEZONE_HOUR
+TIMEZONE_MINUTE
+TO
+TRANSACTION
+TRANSLATE
+TRANSLATION
+TRIM
+TRUE
+UNION
+UNIQUE
+UNKNOWN
+UPDATE
+UPPER
+USER
+USING
+VALUES
+VARCHAR
+VARYING
+VIEW
+WHENEVER
+WHERE
+WITH
+WORK
+WRITE
+XML
+XMLEXISTS
+XMLPARSE
+XMLQUERY
+XMLSERIALIZE
+YEAR
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 f6f51da0f0..a5802444a1 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
@@ -90,14 +90,14 @@ public abstract class DBAdapter implements IDBAdapter
validateTable((DBTable)table, statement);
}
- public String mangleFieldName(String name, int attempt)
+ public String mangleTableName(String name, int attempt)
{
- return name;
+ return mangleName(name, getMaximumTableNameLength(), attempt);
}
- public String mangleTableName(String name, int attempt)
+ public String mangleFieldName(String name, int attempt)
{
- return name;
+ return mangleName(name, getMaximumFieldNameLength(), attempt);
}
@Override
@@ -177,6 +177,43 @@ public abstract class DBAdapter implements IDBAdapter
throw new IllegalArgumentException("Unknown type: " + type);
}
+ protected int getMaximumTableNameLength()
+ {
+ return 128;
+ }
+
+ protected int getMaximumFieldNameLength()
+ {
+ return 128;
+ }
+
+ protected String mangleName(String name, int max, int attempt)
+ {
+ if (isReservedWord(name))
+ {
+ String suffix = "_" + String.valueOf(attempt);
+ if (name.length() + suffix.length() > max)
+ {
+ name = name.substring(0, max - suffix.length()) + suffix;
+ }
+ else
+ {
+ name += suffix;
+ }
+ }
+ else if (name.length() > max)
+ {
+ name = name.substring(0, max);
+ }
+
+ return name;
+ }
+
+ protected boolean isReservedWord(String word)
+ {
+ return false;
+ }
+
protected void validateTable(DBTable table, Statement statement) throws DBException
{
try

Back to the top