[
https://issues.apache.org/jira/browse/DDLUTILS-199?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12601890#action_12601890
]
cordeo edited comment on DDLUTILS-199 at 6/3/08 6:57 AM:
-------------------------------------------------------------------
Without double quotes, case insensitivity seems to work by translating
everything to lowercase. My table names are case-sensitive however ('Entity')
and thus cannot be found if not using double quotes:
xldoc=# SELECT nextval('Entity_id_seq');
ERROR: relation "entity_id_seq" does not exist
xldoc=# SELECT nextval('"Entity_id_seq"');
nextval
---------
2
(1 row)
On an empty database (case sensitivity turned on), I get this debug output:
0 [Timer-3] DEBUG org.apache.ddlutils.platform.postgresql.PostgreSqlPlatform
- About to execute SQL
-- -----------------------------------------------------------------------
-- Entity
-- -----------------------------------------------------------------------
CREATE SEQUENCE "Entity_id_seq"
10 [Timer-3] DEBUG org.apache.ddlutils.platform.postgresql.PostgreSqlPlatform
- After execution, 0 row(s) have been changed
10 [Timer-3] DEBUG org.apache.ddlutils.platform.postgresql.PostgreSqlPlatform
- About to execute SQL CREATE TABLE "Entity"
(
"id" BIGINT NOT NULL UNIQUE DEFAULT nextval('Entity_id_seq'),
...
)
failed with: ERROR: relation "entity_id_seq" does not exist
The sequence is created using the case-sensitive "Entity_id_seq", but
subsequently accessed using the case-insensitive nextval('Entity_id_seq').
Because insensitivity is implemented by translating everything to lowercase,
the sequence is not found. As far as I can see, this is a bug that can be fixed
by the proposed code change.
was (Author: cordeo):
Without double quotes, case insensitivity seems to work by translating
everything to lowercase. My table names are case-sensitive however ('Entity')
and thus cannot be found if not using double quotes:
xldoc=# SELECT nextval('Entity_id_seq');
ERROR: relation "entity_id_seq" does not exist
xldoc=# SELECT nextval('"Entity_id_seq"');
nextval
---------
2
(1 row)
> Postgress AutoIncrement fails
> -----------------------------
>
> Key: DDLUTILS-199
> URL: https://issues.apache.org/jira/browse/DDLUTILS-199
> Project: DdlUtils
> Issue Type: Bug
> Components: Core - PostgreSql
> Affects Versions: 1.0
> Environment: Ubuntu 7.10, PostgreSQL 8.2.6
> Reporter: Rijk van Haaften
> Assignee: Thomas Dudziak
> Fix For: 1.1
>
> Original Estimate: 0.17h
> Remaining Estimate: 0.17h
>
> class org.apache.ddlutils.platform.postgresql.PostgreSqlBuilder
> writeColumnAutoIncrementStmt(Table, Column)
> encloses the parameter of nextval in single quotes.
> print("UNIQUE DEFAULT nextval('");
> ...
> print("')");
> which in my case generates
> UNIQUE DEFAULT nextval('Entity_id_seq')
> The underscore is a 'special' character, so the string Entity_id_seq needs to
> be in double quotes. The fix is simple but tricky: the single quotes MUST
> remain! My local fix (notice the escaped double quote \" twice):
> /**
> * [EMAIL PROTECTED]
> */
> protected void writeColumnAutoIncrementStmt(Table table, Column column)
> throws IOException
> {
> print("UNIQUE DEFAULT nextval('\"");
> print(getConstraintName(null, table, column.getName(), "seq"));
> print("\"')");
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.