mirror of
https://github.com/postgres/postgres.git
synced 2025-11-06 07:49:08 +03:00
Database-level collation version tracking
This adds to database objects the same version tracking that collation objects have. There is a new pg_database column datcollversion that stores the version, a new function pg_database_collation_actual_version() to get the version from the operating system, and a new subcommand ALTER DATABASE ... REFRESH COLLATION VERSION. This was not originally added together with pg_collation.collversion, since originally version tracking was only supported for ICU, and ICU on a database-level is not currently supported. But we now have version tracking for glibc (since PG13), FreeBSD (since PG14), and Windows (since PG13), so this is useful to have now. Reviewed-by: Julien Rouhaud <rjuju123@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/f0ff3190-29a3-5b39-a179-fa32eee57db6%40enterprisedb.com
This commit is contained in:
@@ -136,6 +136,7 @@ ClassifyUtilityCommandAsReadOnly(Node *parsetree)
|
||||
switch (nodeTag(parsetree))
|
||||
{
|
||||
case T_AlterCollationStmt:
|
||||
case T_AlterDatabaseRefreshCollStmt:
|
||||
case T_AlterDatabaseSetStmt:
|
||||
case T_AlterDatabaseStmt:
|
||||
case T_AlterDefaultPrivilegesStmt:
|
||||
@@ -779,6 +780,11 @@ standard_ProcessUtility(PlannedStmt *pstmt,
|
||||
AlterDatabase(pstate, (AlterDatabaseStmt *) parsetree, isTopLevel);
|
||||
break;
|
||||
|
||||
case T_AlterDatabaseRefreshCollStmt:
|
||||
/* no event triggers for global objects */
|
||||
AlterDatabaseRefreshColl((AlterDatabaseRefreshCollStmt *) parsetree);
|
||||
break;
|
||||
|
||||
case T_AlterDatabaseSetStmt:
|
||||
/* no event triggers for global objects */
|
||||
AlterDatabaseSet((AlterDatabaseSetStmt *) parsetree);
|
||||
@@ -2801,9 +2807,7 @@ CreateCommandTag(Node *parsetree)
|
||||
break;
|
||||
|
||||
case T_AlterDatabaseStmt:
|
||||
tag = CMDTAG_ALTER_DATABASE;
|
||||
break;
|
||||
|
||||
case T_AlterDatabaseRefreshCollStmt:
|
||||
case T_AlterDatabaseSetStmt:
|
||||
tag = CMDTAG_ALTER_DATABASE;
|
||||
break;
|
||||
@@ -3444,9 +3448,7 @@ GetCommandLogLevel(Node *parsetree)
|
||||
break;
|
||||
|
||||
case T_AlterDatabaseStmt:
|
||||
lev = LOGSTMT_DDL;
|
||||
break;
|
||||
|
||||
case T_AlterDatabaseRefreshCollStmt:
|
||||
case T_AlterDatabaseSetStmt:
|
||||
lev = LOGSTMT_DDL;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user