Thread: pgsql: DDL support for collations

pgsql: DDL support for collations

From
Peter Eisentraut
Date:
DDL support for collations

- collowner field
- CREATE COLLATION
- ALTER COLLATION
- DROP COLLATION
- COMMENT ON COLLATION
- integration with extensions
- pg_dump support for the above
- dependency management
- psql tab completion
- psql \dO command

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/b313bca0afce3ab9dab0a77c64c0982835854b9a

Modified Files
--------------
doc/src/sgml/catalogs.sgml                       |   21 +-
doc/src/sgml/charset.sgml                        |   11 +-
doc/src/sgml/ref/allfiles.sgml                   |    3 +
doc/src/sgml/ref/alter_collation.sgml            |  128 +++++++
doc/src/sgml/ref/alter_extension.sgml            |    1 +
doc/src/sgml/ref/comment.sgml                    |    2 +
doc/src/sgml/ref/create_collation.sgml           |  175 ++++++++++
doc/src/sgml/ref/drop_collation.sgml             |  110 ++++++
doc/src/sgml/ref/psql-ref.sgml                   |   19 +
doc/src/sgml/reference.sgml                      |    3 +
src/backend/catalog/Makefile                     |    2 +-
src/backend/catalog/aclchk.c                     |   31 ++
src/backend/catalog/dependency.c                 |   46 +++
src/backend/catalog/heap.c                       |    9 +
src/backend/catalog/index.c                      |   14 +
src/backend/catalog/objectaddress.c              |    9 +
src/backend/catalog/pg_collation.c               |  163 +++++++++
src/backend/catalog/pg_shdepend.c                |    6 +
src/backend/catalog/pg_type.c                    |   13 +
src/backend/commands/Makefile                    |    2 +-
src/backend/commands/alter.c                     |   17 +
src/backend/commands/collationcmds.c             |  401 ++++++++++++++++++++++
src/backend/commands/comment.c                   |    5 +
src/backend/commands/dbcommands.c                |  116 ++++---
src/backend/commands/tablecmds.c                 |   26 +-
src/backend/commands/typecmds.c                  |    1 +
src/backend/parser/gram.y                        |   57 +++-
src/backend/tcop/utility.c                       |   18 +
src/bin/initdb/initdb.c                          |    3 +-
src/bin/pg_dump/common.c                         |    6 +
src/bin/pg_dump/pg_backup_archiver.c             |    4 +-
src/bin/pg_dump/pg_dump.c                        |  187 ++++++++++
src/bin/pg_dump/pg_dump.h                        |   10 +-
src/bin/pg_dump/pg_dump_sort.c                   |   17 +-
src/bin/psql/command.c                           |    3 +
src/bin/psql/describe.c                          |   62 ++++-
src/bin/psql/describe.h                          |    3 +
src/bin/psql/help.c                              |    1 +
src/bin/psql/tab-complete.c                      |   18 +-
src/include/catalog/catversion.h                 |    2 +-
src/include/catalog/dependency.h                 |    1 +
src/include/catalog/pg_collation.h               |   12 +-
src/include/catalog/pg_collation_fn.h            |   23 ++
src/include/catalog/pg_type_fn.h                 |    1 +
src/include/commands/collationcmds.h             |   28 ++
src/include/commands/dbcommands.h                |    2 +
src/include/nodes/parsenodes.h                   |    1 +
src/include/parser/kwlist.h                      |    1 +
src/include/utils/acl.h                          |    2 +
src/test/regress/expected/collate.linux.utf8.out |   93 +++++
src/test/regress/sql/collate.linux.utf8.sql      |   62 ++++
51 files changed, 1860 insertions(+), 91 deletions(-)


Re: pgsql: DDL support for collations

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> DDL support for collations

When you are adding a new DumpableObject type to pg_dump, please do NOT
do this:

@@ -95,7 +96,8 @@ static const int newObjectTypePriority[] =
    16,                         /* DO_FOREIGN_SERVER */
    28,                         /* DO_DEFAULT_ACL */
    20,                         /* DO_BLOB */
-   22                          /* DO_BLOB_DATA */
+   22,                         /* DO_BLOB_DATA */
+   3                           /* DO_COLLATION */
 };

That is, do not just give the new object type the same sort priority as
some randomly-chosen existing type.  The effect of what you've done is
that collations and extensions will be intermixed in the dump output,
which is ugly.  Give collations their own place in the sort order and
renumber the existing entries as necessary to support that.

            regards, tom lane