Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0527a45

Browse files
committed
Implement information schema interval_type columns
Also correct reporting of interval precision when field restrictionsare specified in the typmod.
1 parent80a1d16 commit0527a45

File tree

2 files changed

+51
-7
lines changed

2 files changed

+51
-7
lines changed

‎doc/src/sgml/information_schema.sgml

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,15 @@
483483
<row>
484484
<entry><literal>interval_type</literal></entry>
485485
<entry><type>character_data</type></entry>
486-
<entry>Not yet implemented</entry>
486+
<entry>
487+
If <literal>data_type</literal> identifies an interval type,
488+
this column contains the specification which fields the
489+
intervals include for this attribute, e.g., <literal>YEAR TO
490+
MONTH</literal>, <literal>DAY TO SECOND</literal>, etc. If no
491+
field restrictions were specified (that is, the interval
492+
accepts all fields), and for all other data types, this field
493+
is null.
494+
</entry>
487495
</row>
488496

489497
<row>
@@ -1343,7 +1351,15 @@
13431351
<row>
13441352
<entry><literal>interval_type</literal></entry>
13451353
<entry><type>character_data</type></entry>
1346-
<entry>Not yet implemented</entry>
1354+
<entry>
1355+
If <literal>data_type</literal> identifies an interval type,
1356+
this column contains the specification which fields the
1357+
intervals include for this column, e.g., <literal>YEAR TO
1358+
MONTH</literal>, <literal>DAY TO SECOND</literal>, etc. If no
1359+
field restrictions were specified (that is, the interval
1360+
accepts all fields), and for all other data types, this field
1361+
is null.
1362+
</entry>
13471363
</row>
13481364

13491365
<row>
@@ -2144,7 +2160,15 @@
21442160
<row>
21452161
<entry><literal>interval_type</literal></entry>
21462162
<entry><type>character_data</type></entry>
2147-
<entry>Not yet implemented</entry>
2163+
<entry>
2164+
If <literal>data_type</literal> identifies an interval type,
2165+
this column contains the specification which fields the
2166+
intervals include for this domain, e.g., <literal>YEAR TO
2167+
MONTH</literal>, <literal>DAY TO SECOND</literal>, etc. If no
2168+
field restrictions were specified (that is, the interval
2169+
accepts all fields), and for all other data types, this field
2170+
is null.
2171+
</entry>
21482172
</row>
21492173

21502174
<row>

‎src/backend/catalog/information_schema.sql

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,18 @@ $$SELECT
158158
WHEN $1IN (1083,1114,1184,1266)/* time, timestamp, same + tz*/
159159
THEN CASE WHEN $2<0 THEN6 ELSE $2 END
160160
WHEN $1IN (1186)/* interval*/
161-
THEN CASE WHEN $2<0 THEN6 ELSE $2 &65535 END
161+
THEN CASE WHEN $2<0OR $2 &65535=65535 THEN6 ELSE $2 &65535 END
162+
ELSEnull
163+
END$$;
164+
165+
CREATEFUNCTION_pg_interval_type(typidoid, mod int4) RETURNStext
166+
LANGUAGE sql
167+
IMMUTABLE
168+
RETURNSNULLONNULL INPUT
169+
AS
170+
$$SELECT
171+
CASE WHEN $1IN (1186)/* interval*/
172+
THENupper(substring(format_type($1, $2)from'interval[()0-9]* #"%#"' for'#'))
162173
ELSEnull
163174
END$$;
164175

@@ -321,7 +332,10 @@ CREATE VIEW attributes AS
321332
AS cardinal_number)
322333
AS datetime_precision,
323334

324-
CAST(nullAS character_data)AS interval_type,-- FIXME
335+
CAST(
336+
_pg_interval_type(_pg_truetypid(a, t), _pg_truetypmod(a, t))
337+
AS character_data)
338+
AS interval_type,
325339
CAST(nullAS cardinal_number)AS interval_precision,
326340

327341
CAST(current_database()AS sql_identifier)AS attribute_udt_catalog,
@@ -670,7 +684,10 @@ CREATE VIEW columns AS
670684
AS cardinal_number)
671685
AS datetime_precision,
672686

673-
CAST(nullAS character_data)AS interval_type,-- FIXME
687+
CAST(
688+
_pg_interval_type(_pg_truetypid(a, t), _pg_truetypmod(a, t))
689+
AS character_data)
690+
AS interval_type,
674691
CAST(nullAS cardinal_number)AS interval_precision,
675692

676693
CAST(nullAS sql_identifier)AS character_set_catalog,
@@ -936,7 +953,10 @@ CREATE VIEW domains AS
936953
AS cardinal_number)
937954
AS datetime_precision,
938955

939-
CAST(nullAS character_data)AS interval_type,-- FIXME
956+
CAST(
957+
_pg_interval_type(t.typbasetype,t.typtypmod)
958+
AS character_data)
959+
AS interval_type,
940960
CAST(nullAS cardinal_number)AS interval_precision,
941961

942962
CAST(t.typdefaultAS character_data)AS domain_default,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp