Return-Path: Delivered-To: apmail-db-ddlutils-dev-archive@www.apache.org Received: (qmail 2685 invoked from network); 3 Jun 2008 13:59:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 3 Jun 2008 13:59:09 -0000 Received: (qmail 7269 invoked by uid 500); 3 Jun 2008 13:59:11 -0000 Delivered-To: apmail-db-ddlutils-dev-archive@db.apache.org Received: (qmail 7251 invoked by uid 500); 3 Jun 2008 13:59:11 -0000 Mailing-List: contact ddlutils-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ddlutils-dev@db.apache.org Delivered-To: mailing list ddlutils-dev@db.apache.org Received: (qmail 7235 invoked by uid 99); 3 Jun 2008 13:59:11 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Jun 2008 06:59:11 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Jun 2008 13:58:23 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 1EE1B234C12D for ; Tue, 3 Jun 2008 06:58:45 -0700 (PDT) Message-ID: <130906163.1212501525125.JavaMail.jira@brutus> Date: Tue, 3 Jun 2008 06:58:45 -0700 (PDT) From: "Rijk van Haaften (JIRA)" To: ddlutils-dev@db.apache.org Subject: [jira] Issue Comment Edited: (DDLUTILS-199) Postgress AutoIncrement fails In-Reply-To: <941587122.1205771005659.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ 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): > /** > * {@inheritDoc} > */ > 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.