Search Postgresql Archives

Re: Question on Table creation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2/20/24 13:19, sud wrote:
Hi,
We are newly creating tables in postgres 15.4 version and we got the DDL auto generated from one of the tools and they look something like below. (note- I have modified the exact names to some dummy names.) These are all failing because the schema which already exists in the database having name 'schema_name' which is all lower case.So then i modified the script to remove the double quotes from all the table/column/schema names, as it seems postgres makes things case sensitive if they are put in quotes.

But then encountered the opposite, i.e. some places where it's showing the object already created in the database as Upper case or mixed case like schema owner which is showing as "*S*chema_*O*wner" as I see in the information_schema.schemata data dictionary. And here the scripts failing if removing the quotes from the schema owner.

So to make it standardized, we have few questions around these

1)In this situation , do we have to drop the "*S*chema_*O*wner"  and recreate it with all small letters? And then create the schema with small letters again?

2)As it seems keeping mixed sets will be troublesome while accessing them at a later stage, so is it advisable to not to use quotes while creating key database objects like schema/table/views/columns/indexes/constraints in postgres? Is there any other standard we should follow in postgres so as to not have such issues in future?

See Tom Lanes post. I would add if you use tools like ORM's, GUI clients or libraries you might find they double quote all identifiers by default. I found it safest to use lower case at all times to insure that this how the identifier ends up even if goes through one of those tools.


 > 3)"Comment" on table is not accepted in the same "create table"
statement but as a separate statement post table creation. Hope that is how it works in postgres.

That is what the docs say:

https://www.postgresql.org/docs/current/sql-comment.html


4)Never created or maintained any partition table in postgres. Here we want to daily range partition the both tables based on column "PARENT_CREATE_TIMESTAMP", so is it advisable to create the individual future partitions post table creation manually or through some automated job or we should do it using pg_partman extension? I do see a lot of docs around pg_partman. Would you suggest any specific doc which guides us to do it in an easy way.

The 'easy' way is the one you understand and can maintain. pg_partman does a lot of the boiler plate for you so there is that. The other side is you need to read and understand:

https://github.com/pgpartman/pg_partman/blob/master/doc/pg_partman.md

to verify it actually going to do what you want.


Regards
Sud

--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux