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

Commit0de45c1

Browse files
committed
Add timestamp-versus-timestamptz cross-type comparison functions,
flesh out the index operator classes to include these. In passing,fix erroneous volatility marking of ACL functions.
1 parentf938c2b commit0de45c1

File tree

9 files changed

+355
-18
lines changed

9 files changed

+355
-18
lines changed

‎src/backend/utils/adt/timestamp.c

Lines changed: 183 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.101 2004/03/15 03:29:22 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.102 2004/03/22 01:38:17 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -48,6 +48,7 @@ static intEncodeSpecialTimestamp(Timestamp dt, char *str);
4848
staticTimestampdt2local(Timestampdt,inttimezone);
4949
staticvoidAdjustTimestampForTypmod(Timestamp*time,int32typmod);
5050
staticvoidAdjustIntervalForTypmod(Interval*interval,int32typmod);
51+
staticTimestampTztimestamp2timestamptz(Timestamptimestamp);
5152

5253

5354
/*****************************************************************************
@@ -1393,6 +1394,179 @@ timestamp_cmp(PG_FUNCTION_ARGS)
13931394
}
13941395

13951396

1397+
/*
1398+
* Crosstype comparison functions for timestamp vs timestamptz
1399+
*/
1400+
1401+
Datum
1402+
timestamp_eq_timestamptz(PG_FUNCTION_ARGS)
1403+
{
1404+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(0);
1405+
TimestampTzdt2=PG_GETARG_TIMESTAMPTZ(1);
1406+
TimestampTzdt1;
1407+
1408+
dt1=timestamp2timestamptz(timestampVal);
1409+
1410+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2)==0);
1411+
}
1412+
1413+
Datum
1414+
timestamp_ne_timestamptz(PG_FUNCTION_ARGS)
1415+
{
1416+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(0);
1417+
TimestampTzdt2=PG_GETARG_TIMESTAMPTZ(1);
1418+
TimestampTzdt1;
1419+
1420+
dt1=timestamp2timestamptz(timestampVal);
1421+
1422+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2)!=0);
1423+
}
1424+
1425+
Datum
1426+
timestamp_lt_timestamptz(PG_FUNCTION_ARGS)
1427+
{
1428+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(0);
1429+
TimestampTzdt2=PG_GETARG_TIMESTAMPTZ(1);
1430+
TimestampTzdt1;
1431+
1432+
dt1=timestamp2timestamptz(timestampVal);
1433+
1434+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2)<0);
1435+
}
1436+
1437+
Datum
1438+
timestamp_gt_timestamptz(PG_FUNCTION_ARGS)
1439+
{
1440+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(0);
1441+
TimestampTzdt2=PG_GETARG_TIMESTAMPTZ(1);
1442+
TimestampTzdt1;
1443+
1444+
dt1=timestamp2timestamptz(timestampVal);
1445+
1446+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2)>0);
1447+
}
1448+
1449+
Datum
1450+
timestamp_le_timestamptz(PG_FUNCTION_ARGS)
1451+
{
1452+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(0);
1453+
TimestampTzdt2=PG_GETARG_TIMESTAMPTZ(1);
1454+
TimestampTzdt1;
1455+
1456+
dt1=timestamp2timestamptz(timestampVal);
1457+
1458+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2) <=0);
1459+
}
1460+
1461+
Datum
1462+
timestamp_ge_timestamptz(PG_FUNCTION_ARGS)
1463+
{
1464+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(0);
1465+
TimestampTzdt2=PG_GETARG_TIMESTAMPTZ(1);
1466+
TimestampTzdt1;
1467+
1468+
dt1=timestamp2timestamptz(timestampVal);
1469+
1470+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2) >=0);
1471+
}
1472+
1473+
Datum
1474+
timestamp_cmp_timestamptz(PG_FUNCTION_ARGS)
1475+
{
1476+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(0);
1477+
TimestampTzdt2=PG_GETARG_TIMESTAMPTZ(1);
1478+
TimestampTzdt1;
1479+
1480+
dt1=timestamp2timestamptz(timestampVal);
1481+
1482+
PG_RETURN_INT32(timestamp_cmp_internal(dt1,dt2));
1483+
}
1484+
1485+
Datum
1486+
timestamptz_eq_timestamp(PG_FUNCTION_ARGS)
1487+
{
1488+
TimestampTzdt1=PG_GETARG_TIMESTAMPTZ(0);
1489+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(1);
1490+
TimestampTzdt2;
1491+
1492+
dt2=timestamp2timestamptz(timestampVal);
1493+
1494+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2)==0);
1495+
}
1496+
1497+
Datum
1498+
timestamptz_ne_timestamp(PG_FUNCTION_ARGS)
1499+
{
1500+
TimestampTzdt1=PG_GETARG_TIMESTAMPTZ(0);
1501+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(1);
1502+
TimestampTzdt2;
1503+
1504+
dt2=timestamp2timestamptz(timestampVal);
1505+
1506+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2)!=0);
1507+
}
1508+
1509+
Datum
1510+
timestamptz_lt_timestamp(PG_FUNCTION_ARGS)
1511+
{
1512+
TimestampTzdt1=PG_GETARG_TIMESTAMPTZ(0);
1513+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(1);
1514+
TimestampTzdt2;
1515+
1516+
dt2=timestamp2timestamptz(timestampVal);
1517+
1518+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2)<0);
1519+
}
1520+
1521+
Datum
1522+
timestamptz_gt_timestamp(PG_FUNCTION_ARGS)
1523+
{
1524+
TimestampTzdt1=PG_GETARG_TIMESTAMPTZ(0);
1525+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(1);
1526+
TimestampTzdt2;
1527+
1528+
dt2=timestamp2timestamptz(timestampVal);
1529+
1530+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2)>0);
1531+
}
1532+
1533+
Datum
1534+
timestamptz_le_timestamp(PG_FUNCTION_ARGS)
1535+
{
1536+
TimestampTzdt1=PG_GETARG_TIMESTAMPTZ(0);
1537+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(1);
1538+
TimestampTzdt2;
1539+
1540+
dt2=timestamp2timestamptz(timestampVal);
1541+
1542+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2) <=0);
1543+
}
1544+
1545+
Datum
1546+
timestamptz_ge_timestamp(PG_FUNCTION_ARGS)
1547+
{
1548+
TimestampTzdt1=PG_GETARG_TIMESTAMPTZ(0);
1549+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(1);
1550+
TimestampTzdt2;
1551+
1552+
dt2=timestamp2timestamptz(timestampVal);
1553+
1554+
PG_RETURN_BOOL(timestamp_cmp_internal(dt1,dt2) >=0);
1555+
}
1556+
1557+
Datum
1558+
timestamptz_cmp_timestamp(PG_FUNCTION_ARGS)
1559+
{
1560+
TimestampTzdt1=PG_GETARG_TIMESTAMPTZ(0);
1561+
TimestamptimestampVal=PG_GETARG_TIMESTAMP(1);
1562+
TimestampTzdt2;
1563+
1564+
dt2=timestamp2timestamptz(timestampVal);
1565+
1566+
PG_RETURN_INT32(timestamp_cmp_internal(dt1,dt2));
1567+
}
1568+
1569+
13961570
/*
13971571
*interval_relop- is interval1 relop interval2
13981572
*
@@ -3635,6 +3809,13 @@ Datum
36353809
timestamp_timestamptz(PG_FUNCTION_ARGS)
36363810
{
36373811
Timestamptimestamp=PG_GETARG_TIMESTAMP(0);
3812+
3813+
PG_RETURN_TIMESTAMPTZ(timestamp2timestamptz(timestamp));
3814+
}
3815+
3816+
staticTimestampTz
3817+
timestamp2timestamptz(Timestamptimestamp)
3818+
{
36383819
TimestampTzresult;
36393820
structtmtt,
36403821
*tm=&tt;
@@ -3658,7 +3839,7 @@ timestamp_timestamptz(PG_FUNCTION_ARGS)
36583839
errmsg("timestamp out of range")));
36593840
}
36603841

3661-
PG_RETURN_TIMESTAMPTZ(result);
3842+
returnresult;
36623843
}
36633844

36643845
/* timestamptz_timestamp()

‎src/include/catalog/catversion.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
3838
* Portions Copyright (c) 1994, Regents of the University of California
3939
*
40-
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.221 2004/03/17 20:48:42 tgl Exp $
40+
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.222 2004/03/22 01:38:17 tgl Exp $
4141
*
4242
*-------------------------------------------------------------------------
4343
*/
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/*yyyymmddN */
56-
#defineCATALOG_VERSION_NO200403171
56+
#defineCATALOG_VERSION_NO200403211
5757

5858
#endif

‎src/include/catalog/pg_amop.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
2424
* Portions Copyright (c) 1994, Regents of the University of California
2525
*
26-
* $PostgreSQL: pgsql/src/include/catalog/pg_amop.h,v 1.58 2004/02/14 20:16:17 tgl Exp $
26+
* $PostgreSQL: pgsql/src/include/catalog/pg_amop.h,v 1.59 2004/03/22 01:38:17 tgl Exp $
2727
*
2828
* NOTES
2929
* the genbki.sh script reads this file and generates .bki
@@ -349,6 +349,12 @@ DATA(insert (2039 1082 2 f 2372 ));
349349
DATA(insert (203910823f2373 ));
350350
DATA(insert (203910824f2374 ));
351351
DATA(insert (203910825f2375 ));
352+
/* crosstype operators vs timestamptz */
353+
DATA(insert (203911841f2534 ));
354+
DATA(insert (203911842f2535 ));
355+
DATA(insert (203911843f2536 ));
356+
DATA(insert (203911844f2537 ));
357+
DATA(insert (203911845f2538 ));
352358

353359
/*
354360
*btree timestamptz_ops
@@ -365,6 +371,12 @@ DATA(insert (1998 1082 2 f 2385 ));
365371
DATA(insert (199810823f2386 ));
366372
DATA(insert (199810824f2387 ));
367373
DATA(insert (199810825f2388 ));
374+
/* crosstype operators vs timestamp */
375+
DATA(insert (199811141f2540 ));
376+
DATA(insert (199811142f2541 ));
377+
DATA(insert (199811143f2542 ));
378+
DATA(insert (199811144f2543 ));
379+
DATA(insert (199811145f2544 ));
368380

369381
/*
370382
*btree interval_ops

‎src/include/catalog/pg_amproc.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
2020
* Portions Copyright (c) 1994, Regents of the University of California
2121
*
22-
* $PostgreSQL: pgsql/src/include/catalog/pg_amproc.h,v 1.47 2004/02/14 20:16:17 tgl Exp $
22+
* $PostgreSQL: pgsql/src/include/catalog/pg_amproc.h,v 1.48 2004/03/22 01:38:17 tgl Exp $
2323
*
2424
* NOTES
2525
* the genbki.sh script reads this file and generates .bki
@@ -117,11 +117,13 @@ DATA(insert (1994 0 1360 ));
117117
DATA(insert (1996011107 ));
118118
DATA(insert (1998011314 ));
119119
DATA(insert (1998108212383 ));
120+
DATA(insert (1998111412533 ));
120121
DATA(insert (2000011358 ));
121122
DATA(insert (2002011672 ));
122123
DATA(insert (200301360 ));
123124
DATA(insert (2039012045 ));
124125
DATA(insert (2039108212370 ));
126+
DATA(insert (2039118412526 ));
125127
DATA(insert (2095012166 ));
126128
DATA(insert (2096012166 ));
127129
DATA(insert (2097012180 ));

‎src/include/catalog/pg_operator.h

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
99
* Portions Copyright (c) 1994, Regents of the University of California
1010
*
11-
* $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.124 2004/02/14 20:16:17 tgl Exp $
11+
* $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.125 2004/03/22 01:38:17 tgl Exp $
1212
*
1313
* NOTES
1414
* the genbki.sh script reads this file and generates .bki
@@ -822,32 +822,48 @@ DATA(insert OID = 2337 ( "~<>~" PGNSP PGUID b f 19 19 16 2337 2334 0 0 0 0 name_
822822

823823
DATA(insertOID=2345 ("<"PGNSPPGUIDbf1082111416237523480000date_lt_timestampscalarltselscalarltjoinsel ));
824824
DATA(insertOID=2346 ("<="PGNSPPGUIDbf1082111416237423490000date_le_timestampscalarltselscalarltjoinsel ));
825-
DATA(insertOID=2347 ("="PGNSPPGUIDbf1082111416237323500000date_eq_timestampeqseleqjoinsel ));
825+
DATA(insertOID=2347 ("="PGNSPPGUIDbf1082111416237323501095206223452349date_eq_timestampeqseleqjoinsel ));
826826
DATA(insertOID=2348 (">="PGNSPPGUIDbf1082111416237223450000date_ge_timestampscalargtselscalargtjoinsel ));
827827
DATA(insertOID=2349 (">"PGNSPPGUIDbf1082111416237123460000date_gt_timestampscalargtselscalargtjoinsel ));
828828
DATA(insertOID=2350 ("<>"PGNSPPGUIDbf1082111416237623470000date_ne_timestampneqselneqjoinsel ));
829829

830830
DATA(insertOID=2358 ("<"PGNSPPGUIDbf1082118416238823610000date_lt_timestamptzscalarltselscalarltjoinsel ));
831831
DATA(insertOID=2359 ("<="PGNSPPGUIDbf1082118416238723620000date_le_timestamptzscalarltselscalarltjoinsel ));
832-
DATA(insertOID=2360 ("="PGNSPPGUIDbf1082118416238623630000date_eq_timestamptzeqseleqjoinsel ));
832+
DATA(insertOID=2360 ("="PGNSPPGUIDbf1082118416238623631095132223582362date_eq_timestamptzeqseleqjoinsel ));
833833
DATA(insertOID=2361 (">="PGNSPPGUIDbf1082118416238523580000date_ge_timestamptzscalargtselscalargtjoinsel ));
834834
DATA(insertOID=2362 (">"PGNSPPGUIDbf1082118416238423590000date_gt_timestamptzscalargtselscalargtjoinsel ));
835835
DATA(insertOID=2363 ("<>"PGNSPPGUIDbf1082118416238923600000date_ne_timestamptzneqselneqjoinsel ));
836836

837837
DATA(insertOID=2371 ("<"PGNSPPGUIDbf1114108216234923740000timestamp_lt_datescalarltselscalarltjoinsel ));
838838
DATA(insertOID=2372 ("<="PGNSPPGUIDbf1114108216234823750000timestamp_le_datescalarltselscalarltjoinsel ));
839-
DATA(insertOID=2373 ("="PGNSPPGUIDbf1114108216234723760000timestamp_eq_dateeqseleqjoinsel ));
839+
DATA(insertOID=2373 ("="PGNSPPGUIDbf1114108216234723762062109523712375timestamp_eq_dateeqseleqjoinsel ));
840840
DATA(insertOID=2374 (">="PGNSPPGUIDbf1114108216234623710000timestamp_ge_datescalargtselscalargtjoinsel ));
841841
DATA(insertOID=2375 (">"PGNSPPGUIDbf1114108216234523720000timestamp_gt_datescalargtselscalargtjoinsel ));
842842
DATA(insertOID=2376 ("<>"PGNSPPGUIDbf1114108216235023730000timestamp_ne_dateneqselneqjoinsel ));
843843

844844
DATA(insertOID=2384 ("<"PGNSPPGUIDbf1184108216236223870000timestamptz_lt_datescalarltselscalarltjoinsel ));
845845
DATA(insertOID=2385 ("<="PGNSPPGUIDbf1184108216236123880000timestamptz_le_datescalarltselscalarltjoinsel ));
846-
DATA(insertOID=2386 ("="PGNSPPGUIDbf1184108216236023890000timestamptz_eq_dateeqseleqjoinsel ));
846+
DATA(insertOID=2386 ("="PGNSPPGUIDbf1184108216236023891322109523842388timestamptz_eq_dateeqseleqjoinsel ));
847847
DATA(insertOID=2387 (">="PGNSPPGUIDbf1184108216235923840000timestamptz_ge_datescalargtselscalargtjoinsel ));
848848
DATA(insertOID=2388 (">"PGNSPPGUIDbf1184108216235823850000timestamptz_gt_datescalargtselscalargtjoinsel ));
849849
DATA(insertOID=2389 ("<>"PGNSPPGUIDbf1184108216236323860000timestamptz_ne_dateneqselneqjoinsel ));
850850

851+
/* crosstype operations for timestamp vs. timestamptz */
852+
853+
DATA(insertOID=2534 ("<"PGNSPPGUIDbf1114118416254425370000timestamp_lt_timestamptzscalarltselscalarltjoinsel ));
854+
DATA(insertOID=2535 ("<="PGNSPPGUIDbf1114118416254325380000timestamp_le_timestamptzscalarltselscalarltjoinsel ));
855+
DATA(insertOID=2536 ("="PGNSPPGUIDbf1114118416254225392062132225342538timestamp_eq_timestamptzeqseleqjoinsel ));
856+
DATA(insertOID=2537 (">="PGNSPPGUIDbf1114118416254125340000timestamp_ge_timestamptzscalargtselscalargtjoinsel ));
857+
DATA(insertOID=2538 (">"PGNSPPGUIDbf1114118416254025350000timestamp_gt_timestamptzscalargtselscalargtjoinsel ));
858+
DATA(insertOID=2539 ("<>"PGNSPPGUIDbf1114118416254525360000timestamp_ne_timestamptzneqselneqjoinsel ));
859+
860+
DATA(insertOID=2540 ("<"PGNSPPGUIDbf1184111416253825430000timestamptz_lt_timestampscalarltselscalarltjoinsel ));
861+
DATA(insertOID=2541 ("<="PGNSPPGUIDbf1184111416253725440000timestamptz_le_timestampscalarltselscalarltjoinsel ));
862+
DATA(insertOID=2542 ("="PGNSPPGUIDbf1184111416253625451322206225402544timestamptz_eq_timestampeqseleqjoinsel ));
863+
DATA(insertOID=2543 (">="PGNSPPGUIDbf1184111416253525400000timestamptz_ge_timestampscalargtselscalargtjoinsel ));
864+
DATA(insertOID=2544 (">"PGNSPPGUIDbf1184111416253425410000timestamptz_gt_timestampscalargtselscalargtjoinsel ));
865+
DATA(insertOID=2545 ("<>"PGNSPPGUIDbf1184111416253925420000timestamptz_ne_timestampneqselneqjoinsel ));
866+
851867

852868
/*
853869
* function prototypes

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp