Обсуждение: pgsql: DDL support for collations
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(-)
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