mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Correct/improve the datetime_precision field in the information schema.
In particular, always show 0 for the date type instead of null, and show 6 (the default) for time, timestamp, and interval without a declared precision. This is now in fuller conformance with the SQL standard. Also clarify the documentation about this. discovered and analyzed by Konstantin Izmailov and Tom Lane
This commit is contained in:
@ -4,7 +4,7 @@
|
||||
*
|
||||
* Copyright (c) 2003-2009, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/catalog/information_schema.sql,v 1.53 2009/02/24 10:06:32 petere Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/catalog/information_schema.sql,v 1.54 2009/06/10 07:03:34 petere Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -160,12 +160,12 @@ CREATE FUNCTION _pg_datetime_precision(typid oid, typmod int4) RETURNS integer
|
||||
RETURNS NULL ON NULL INPUT
|
||||
AS
|
||||
$$SELECT
|
||||
CASE WHEN $2 = -1 /* default typmod */
|
||||
THEN null
|
||||
CASE WHEN $1 IN (1082) /* date */
|
||||
THEN 0
|
||||
WHEN $1 IN (1083, 1114, 1184, 1266) /* time, timestamp, same + tz */
|
||||
THEN $2
|
||||
THEN CASE WHEN $2 < 0 THEN 6 ELSE $2 END
|
||||
WHEN $1 IN (1186) /* interval */
|
||||
THEN $2 & 65535
|
||||
THEN CASE WHEN $2 < 0 THEN 6 ELSE $2 & 65535 END
|
||||
ELSE null
|
||||
END$$;
|
||||
|
||||
|
Reference in New Issue
Block a user