[ 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.