Author Topic: PostgreSQL DDL generation not applying quotation marks around table/field names  (Read 72 times)

PhilGuy

  • EA Novice
  • *
  • Posts: 1
  • Karma: +0/-0
    • View Profile
Hello
I am using EA 13.0.1307 Professional and I am trying to generate a PostgreSQL DDL.
Here are the steps to recreate my problem:
1. Create new EA project
    - type: Database Engineering: PostgreSQL
2. Add a new table (Table1)
    - give it a couple of fields: Id (integer, PK), Name (varchar(50))
3. Generate the DDL for the database

The DDL file correctly identifies the database/table as PostgreSQL (it says so in the commented header of the DDL), but the SQL command generated is:
    CREATE TABLE Table1;
whereas it should be:
    CREATE TABLE "Table1";

I have checked the DDL Template (which I haven't changed at all) and INCLUDE_SURROUND is set and the DDL Left Surround and DDL Right Surround fields are correct (they contain ").

I would be very grateful if you could help me!
Many thanks in advance.

MaXyM

  • EA User
  • **
  • Posts: 71
  • Karma: +5/-0
    • View Profile
In fact you don't need identifier names surrounded by quotation marks always (to be more precise those are double-quote characters)
Postgresql doesn't require them as long as object names are lowercase and don't conflict with keywords.

Personally I always try to avoid a need of using double-quotes.

Try to generate DDL for mixed case object names. Maybe EA will do it properly.
But I can understand the need of double-quotation being forced for all objects for sake of consistency, if at least single object needs it.

BTW EA versions prior to 13.5 had very limited support for data modelling. v13.5 has changed it. But even today, v14.1 remains really buggy in this area


« Last Edit: December 08, 2018, 11:20:02 pm by MaXyM »

qwerty

  • EA Guru
  • *****
  • Posts: 9822
  • Karma: +190/-154
  • I'm no guru at all
    • View Profile
Years ago since I last used those template, but IIRC there was something like %QT% or so to make EA use dbl-quotes in the output.

q.