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

Commit7c243f8

Browse files
author
Thomas G. Lockhart
committed
Add comparision routines and catalog entries to support indices on
datetime and timespan.
1 parentbb77313 commit7c243f8

File tree

5 files changed

+219
-134
lines changed

5 files changed

+219
-134
lines changed

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

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.34 1997/09/01 06:13:21 thomas Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.35 1997/09/04 18:43:21 thomas Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -473,6 +473,35 @@ datetime_ge(DateTime *datetime1, DateTime *datetime2)
473473
}/* datetime_ge() */
474474

475475

476+
/*datetime_cmp- 3-state comparison for datetime
477+
*collate invalid datetime at the end
478+
*/
479+
int
480+
datetime_cmp(DateTime*datetime1,DateTime*datetime2)
481+
{
482+
DateTimedt1,dt2;
483+
484+
if (!PointerIsValid(datetime1)|| !PointerIsValid(datetime2))
485+
return0;
486+
487+
dt1=*datetime1;
488+
dt2=*datetime2;
489+
490+
if (DATETIME_IS_INVALID(dt1)) {
491+
return( (DATETIME_IS_INVALID(dt2)?0:1));
492+
493+
}elseif (DATETIME_IS_INVALID(dt2)) {
494+
return(-1);
495+
496+
}else {
497+
if (DATETIME_IS_RELATIVE(dt1))dt1=SetDateTime(dt1);
498+
if (DATETIME_IS_RELATIVE(dt2))dt2=SetDateTime(dt2);
499+
};
500+
501+
return( ((dt1<dt2)?-1: ((dt1>dt2)?1:0)));
502+
}/* datetime_cmp() */
503+
504+
476505
/*timespan_relop- is timespan1 relop timespan2
477506
*/
478507
bool
@@ -578,6 +607,32 @@ timespan_ge(TimeSpan *timespan1, TimeSpan *timespan2)
578607
}/* timespan_ge() */
579608

580609

610+
/*timespan_cmp- 3-state comparison for timespan
611+
*/
612+
int
613+
timespan_cmp(TimeSpan*timespan1,TimeSpan*timespan2)
614+
{
615+
doublespan1,span2;
616+
617+
if (!PointerIsValid(timespan1)|| !PointerIsValid(timespan2))
618+
return0;
619+
620+
if (TIMESPAN_IS_INVALID(*timespan1)) {
621+
return(TIMESPAN_IS_INVALID(*timespan2)?0:1);
622+
623+
}elseif (TIMESPAN_IS_INVALID(*timespan2)) {
624+
return(-1);
625+
};
626+
627+
span1=timespan1->time;
628+
if (timespan1->month!=0)span1+= (timespan1->month* (30.0*86400));
629+
span2=timespan2->time;
630+
if (timespan2->month!=0)span2+= (timespan2->month* (30.0*86400));
631+
632+
return( (span1<span2)?-1: (span1>span2)?1:0);
633+
}/* timespan_cmp() */
634+
635+
581636
/*----------------------------------------------------------
582637
* "Arithmetic" operators on date/times.
583638
*datetime_fooreturns foo as an object (pointer) that

‎src/include/catalog/pg_amop.h

Lines changed: 76 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Id: pg_amop.h,v 1.4 1996/11/13 20:50:50 scrappy Exp $
10+
* $Id: pg_amop.h,v 1.5 1997/09/04 18:43:57 thomas Exp $
1111
*
1212
* NOTES
1313
* the genbki.sh script reads this file and generates .bki
@@ -103,6 +103,19 @@ DATA(insert OID = 0 ( 402 434 490 6 rtsel rtnpage ));
103103
DATA(insertOID=0 (4024344917rtselrtnpage ));
104104
DATA(insertOID=0 (4024344928rtselrtnpage ));
105105

106+
/*
107+
* rtree circle_ops (supports circles)
108+
*/
109+
110+
DATA(insertOID=0 (40271415061rtselrtnpage ));
111+
DATA(insertOID=0 (40271415072rtselrtnpage ));
112+
DATA(insertOID=0 (40271415083rtselrtnpage ));
113+
DATA(insertOID=0 (40271415094rtselrtnpage ));
114+
DATA(insertOID=0 (40271415105rtselrtnpage ));
115+
DATA(insertOID=0 (40271415116rtselrtnpage ));
116+
DATA(insertOID=0 (40271415127rtselrtnpage ));
117+
DATA(insertOID=0 (40271415138rtselrtnpage ));
118+
106119
/*
107120
* nbtree int2_ops
108121
*/
@@ -324,6 +337,26 @@ DATA(insert OID = 0 ( 403 1115 1108 3 btreesel btreenpage ));
324337
DATA(insertOID=0 (403111511134btreeselbtreenpage ));
325338
DATA(insertOID=0 (403111511125btreeselbtreenpage ));
326339

340+
/*
341+
* nbtree datetime_ops
342+
*/
343+
344+
DATA(insertOID=0 (403131213221btreeselbtreenpage ));
345+
DATA(insertOID=0 (403131213232btreeselbtreenpage ));
346+
DATA(insertOID=0 (403131213203btreeselbtreenpage ));
347+
DATA(insertOID=0 (403131213254btreeselbtreenpage ));
348+
DATA(insertOID=0 (403131213245btreeselbtreenpage ));
349+
350+
/*
351+
* nbtree timespan_ops
352+
*/
353+
354+
DATA(insertOID=0 (403131313321btreeselbtreenpage ));
355+
DATA(insertOID=0 (403131313332btreeselbtreenpage ));
356+
DATA(insertOID=0 (403131313303btreeselbtreenpage ));
357+
DATA(insertOID=0 (403131313354btreeselbtreenpage ));
358+
DATA(insertOID=0 (403131313345btreeselbtreenpage ));
359+
327360
BKI_BEGIN
328361
#ifdefNOBTREE
329362
BKI_END
@@ -477,78 +510,69 @@ DATA(insert OID = 0 ( 404 432 560 3 btreesel btreenpage ));
477510
DATA(insertOID=0 (4044325654btreeselbtreenpage ));
478511
DATA(insertOID=0 (4044325635btreeselbtreenpage ));
479512

513+
/*
514+
* nobtree datetime_ops
515+
*/
516+
517+
DATA(insertOID=0 (404131213221btreeselbtreenpage ));
518+
DATA(insertOID=0 (404131213232btreeselbtreenpage ));
519+
DATA(insertOID=0 (404131213203btreeselbtreenpage ));
520+
DATA(insertOID=0 (404131213254btreeselbtreenpage ));
521+
DATA(insertOID=0 (404131213245btreeselbtreenpage ));
522+
523+
/*
524+
* nobtree timespan_ops
525+
*/
526+
527+
DATA(insertOID=0 (404131313321btreeselbtreenpage ));
528+
DATA(insertOID=0 (404131313332btreeselbtreenpage ));
529+
DATA(insertOID=0 (404131313303btreeselbtreenpage ));
530+
DATA(insertOID=0 (404131313354btreeselbtreenpage ));
531+
DATA(insertOID=0 (404131313345btreeselbtreenpage ));
532+
480533
BKI_BEGIN
481534
#endif/* NOBTREE */
482535
BKI_END
483536

484537
/*
485-
* hash tableint2_ops
538+
* hash table_ops
486539
*/
540+
541+
/* hash table int2_ops */
487542
DATA(insertOID=0 (405421941btreeselbtreenpage ));
488-
/*
489-
* hash table float8_ops
490-
*/
543+
/* hash table float8_ops */
491544
DATA(insertOID=0 (4054236701btreeselbtreenpage ));
492-
/*
493-
* hash table int4_ops
494-
*/
545+
/* hash table int4_ops */
495546
DATA(insertOID=0 (405426961hashselhashnpage ));
496-
/*
497-
* hash table oid_ops
498-
*/
547+
/* hash table oid_ops */
499548
DATA(insertOID=0 (4054276071hashselhashnpage ));
500-
/*
501-
* hash table float4_ops
502-
*/
549+
/* hash table float4_ops */
503550
DATA(insertOID=0 (4054286201hashselhashnpage ));
504-
/*
505-
* hash table char_ops
506-
*/
551+
/* hash table char_ops */
507552
DATA(insertOID=0 (405429921hashselhashnpage ));
508-
/*
509-
* hash table char2_ops
510-
*/
553+
/* hash table char2_ops */
511554
DATA(insertOID=0 (4054064121hashselhashnpage ));
512-
/*
513-
* hash table char4_ops
514-
*/
555+
/* hash table char4_ops */
515556
DATA(insertOID=0 (4054074131hashselhashnpage ));
516-
/*
517-
* hash table char8_ops
518-
*/
557+
/* hash table char8_ops */
519558
DATA(insertOID=0 (4054084141hashselhashnpage ));
520-
/*
521-
* hash table char16_ops
522-
*/
559+
/* hash table char16_ops */
523560
DATA(insertOID=0 (40543012671hashselhashnpage ));
524-
/*
525-
* hash table name_ops
526-
*/
561+
/* hash table name_ops */
527562
DATA(insertOID=0 (4051181931hashselhashnpage ));
528-
/*
529-
* hash table text_ops
530-
*/
563+
/* hash table text_ops */
531564
DATA(insertOID=0 (405431981hashselhashnpage ));
532-
533-
/*
534-
* hash table bpchar_ops
535-
*/
565+
/* hash table bpchar_ops */
536566
DATA(insertOID=0 (405107610541hashselhashnpage ));
537-
538-
/*
539-
* hash table varchar_ops
540-
*/
567+
/* hash table varchar_ops */
541568
DATA(insertOID=0 (405107710621hashselhashnpage ));
542-
543-
/*
544-
* hash table date_ops
545-
*/
569+
/* hash table date_ops */
546570
DATA(insertOID=0 (405111410931hashselhashnpage ));
547-
548-
/*
549-
* hash table time_ops
550-
*/
571+
/* hash table time_ops */
551572
DATA(insertOID=0 (405111511081hashselhashnpage ));
552-
573+
/* hash table datetime_ops */
574+
DATA(insertOID=0 (405131213201hashselhashnpage ));
575+
/* hash table timespan_ops */
576+
DATA(insertOID=0 (405131313301hashselhashnpage ));
553577

554578
#endif/* PG_AMOP_H */

‎src/include/catalog/pg_amproc.h

Lines changed: 59 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
* Copyright (c) 1994, Regents of the University of California
1111
*
12-
* $Id: pg_amproc.h,v 1.3 1996/11/13 20:50:52 scrappy Exp $
12+
* $Id: pg_amproc.h,v 1.4 1997/09/04 18:43:57 thomas Exp $
1313
*
1414
* NOTES
1515
* the genbki.sh script reads this file and generates .bki
@@ -61,75 +61,77 @@ typedef FormData_pg_amproc*Form_pg_amproc;
6161
* ----------------
6262
*/
6363

64-
DATA(insertOID=0 (4024221931));
65-
DATA(insertOID=0 (4024221942));
66-
DATA(insertOID=0 (4024221953));
67-
DATA(insertOID=0 (4024331931));
68-
DATA(insertOID=0 (4024331942));
69-
DATA(insertOID=0 (4024331963));
70-
DATA(insertOID=0 (4024341971));
71-
DATA(insertOID=0 (4024341982));
72-
DATA(insertOID=0 (4024341993));
73-
DATA(insertOID=0 (4034213501));
74-
DATA(insertOID=0 (4034233551));
75-
DATA(insertOID=0 (4034243531));
76-
DATA(insertOID=0 (4034253521));
77-
DATA(insertOID=0 (4034263511));
78-
DATA(insertOID=0 (4034273561));
79-
DATA(insertOID=0 (4034283541));
80-
DATA(insertOID=0 (4034293581));
81-
DATA(insertOID=0 (4034066891));
82-
DATA(insertOID=0 (4034076901));
83-
DATA(insertOID=0 (4034086911));
84-
DATA(insertOID=0 (40311813591));
85-
DATA(insertOID=0 (40343012741));
86-
DATA(insertOID=0 (4034313601));
87-
DATA(insertOID=0 (4034323571));
88-
DATA(insertOID=0 (4034359281));
89-
DATA(insertOID=0 (4034369481));
90-
DATA(insertOID=0 (4034378281));
64+
DATA(insertOID=0 (4024221931));
65+
DATA(insertOID=0 (4024221942));
66+
DATA(insertOID=0 (4024221953));
67+
DATA(insertOID=0 (4024331931));
68+
DATA(insertOID=0 (4024331942));
69+
DATA(insertOID=0 (4024331963));
70+
DATA(insertOID=0 (4024341971));
71+
DATA(insertOID=0 (4024341982));
72+
DATA(insertOID=0 (4024341993));
73+
DATA(insertOID=0 (4034213501));
74+
DATA(insertOID=0 (4034233551));
75+
DATA(insertOID=0 (4034243531));
76+
DATA(insertOID=0 (4034253521));
77+
DATA(insertOID=0 (4034263511));
78+
DATA(insertOID=0 (4034273561));
79+
DATA(insertOID=0 (4034283541));
80+
DATA(insertOID=0 (4034293581));
81+
DATA(insertOID=0 (4034066891));
82+
DATA(insertOID=0 (4034076901));
83+
DATA(insertOID=0 (4034086911));
84+
DATA(insertOID=0 (40311813591));
85+
DATA(insertOID=0 (40343012741));
86+
DATA(insertOID=0 (4034313601));
87+
DATA(insertOID=0 (4034323571));
88+
DATA(insertOID=0 (4034359281));
89+
DATA(insertOID=0 (4034369481));
90+
DATA(insertOID=0 (4034378281));
9191
DATA(insertOID=0 (403107610781));
9292
DATA(insertOID=0 (403107710791));
9393
DATA(insertOID=0 (403111410921));
9494
DATA(insertOID=0 (403111511071));
95+
DATA(insertOID=0 (403131213141));
96+
DATA(insertOID=0 (403131313151));
9597

9698
BKI_BEGIN
9799
#ifdefNOBTREE
98100
BKI_END
99-
DATA(insertOID=0 (4044213501));
100-
DATA(insertOID=0 (4044233551));
101-
DATA(insertOID=0 (4044243531));
102-
DATA(insertOID=0 (4044253521));
103-
DATA(insertOID=0 (4044263511));
104-
DATA(insertOID=0 (4044273561));
105-
DATA(insertOID=0 (4044283541));
106-
DATA(insertOID=0 (4044293581));
107-
DATA(insertOID=0 (4044066891));
108-
DATA(insertOID=0 (4044076901));
109-
DATA(insertOID=0 (4044086911));
110-
DATA(insertOID=0 (40411813591));
111-
DATA(insertOID=0 (40443012741));
112-
DATA(insertOID=0 (4044313601));
113-
DATA(insertOID=0 (4044323571));
101+
DATA(insertOID=0 (4044213501));
102+
DATA(insertOID=0 (4044233551));
103+
DATA(insertOID=0 (4044243531));
104+
DATA(insertOID=0 (4044253521));
105+
DATA(insertOID=0 (4044263511));
106+
DATA(insertOID=0 (4044273561));
107+
DATA(insertOID=0 (4044283541));
108+
DATA(insertOID=0 (4044293581));
109+
DATA(insertOID=0 (4044066891));
110+
DATA(insertOID=0 (4044076901));
111+
DATA(insertOID=0 (4044086911));
112+
DATA(insertOID=0 (40411813591));
113+
DATA(insertOID=0 (40443012741));
114+
DATA(insertOID=0 (4044313601));
115+
DATA(insertOID=0 (4044323571));
114116
BKI_BEGIN
115117
#endif/* NOBTREE */
116118
BKI_END
117119

118-
DATA(insertOID=0 (4054214491));
119-
DATA(insertOID=0 (4054234521));
120-
DATA(insertOID=0 (4054264501));
121-
DATA(insertOID=0 (4054274531));
122-
DATA(insertOID=0 (4054284511));
123-
DATA(insertOID=0 (4054294541));
124-
DATA(insertOID=0 (4054066921));
125-
DATA(insertOID=0 (4054076931));
126-
DATA(insertOID=0 (4054086941));
127-
DATA(insertOID=0 (40511814551));
128-
DATA(insertOID=0 (40543012811));
129-
DATA(insertOID=0 (4054314561));
120+
DATA(insertOID=0 (4054214491));
121+
DATA(insertOID=0 (4054234521));
122+
DATA(insertOID=0 (4054264501));
123+
DATA(insertOID=0 (4054274531));
124+
DATA(insertOID=0 (4054284511));
125+
DATA(insertOID=0 (4054294541));
126+
DATA(insertOID=0 (4054066921));
127+
DATA(insertOID=0 (4054076931));
128+
DATA(insertOID=0 (4054086941));
129+
DATA(insertOID=0 (40511814551));
130+
DATA(insertOID=0 (40543012811));
131+
DATA(insertOID=0 (4054314561));
130132
DATA(insertOID=0 (405107610801));
131133
DATA(insertOID=0 (405107710811));
132-
DATA(insertOID=0 (40511144501));
133-
DATA(insertOID=0 (40511156941));
134+
DATA(insertOID=0 (40511144501));
135+
DATA(insertOID=0 (40511156941));
134136

135137
#endif/* PG_AMPROC_H */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp