]> granicus.if.org Git - postgresql/commitdiff
Add new operators and functions for geometric types.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Tue, 29 Jul 1997 16:17:52 +0000 (16:17 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Tue, 29 Jul 1997 16:17:52 +0000 (16:17 +0000)
Add text concatenation operator and function.
Add text trim function for SQL92 support.

src/include/catalog/pg_operator.h
src/include/catalog/pg_proc.h

index beb3b8aa4a28180b478985da933b15c48aa1a86b..6bab9310b4aaff3a2f5cd5e36217ff625cb1b55c 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_operator.h,v 1.11 1997/05/11 15:19:30 thomas Exp $
+ * $Id: pg_operator.h,v 1.12 1997/07/29 16:17:50 thomas Exp $
  *
  * NOTES
  *    the genbki.sh script reads this file and generates .bki
@@ -100,6 +100,7 @@ DATA(insert OID = 95 (  "<"        PGUID 0 b t f  21  21  16 520 524 0 0 int2lt
 DATA(insert OID = 96 (  "="        PGUID 0 b t t  23  23  16  96 518 97 97 int4eq eqsel eqjoinsel ));
 DATA(insert OID = 97 (  "<"        PGUID 0 b t f  23  23  16 521 525 0 0 int4lt intltsel intltjoinsel ));
 DATA(insert OID = 98 (  "="        PGUID 0 b t t  25  25  16  98 531 664 664 texteq eqsel eqjoinsel ));
+
 DATA(insert OID = 1267 (  "="        PGUID 0 b t t  20  20  16  1267 644 645 645 char16eq eqsel eqjoinsel ));
 DATA(insert OID = 329 (  "="       PGUID 0 b t t  1000  1000  16  329 0  0  0 array_eq eqsel eqjoinsel ));
 DATA(insert OID = 349 (  "="       PGUID 0 b t t  1001  1001  16  349 0  0  0 array_eq eqsel eqjoinsel ));
@@ -159,35 +160,35 @@ DATA(insert OID = 485 (  "<<"      PGUID 0 b t f 604 604  16   0   0   0   0 pol
 DATA(insert OID = 486 (  "&<"      PGUID 0 b t f 604 604  16   0   0   0   0 poly_overleft intltsel intltjoinsel ));
 DATA(insert OID = 487 (  "&>"      PGUID 0 b t f 604 604  16   0   0   0   0 poly_overright intltsel intltjoinsel ));
 DATA(insert OID = 488 (  ">>"      PGUID 0 b t f 604 604  16   0   0   0   0 poly_right intltsel intltjoinsel ));
-DATA(insert OID = 489 (  "@"       PGUID 0 b t f 604 604  16   0   0   0   0 poly_contained intltsel intltjoinsel ));
-DATA(insert OID = 490 (  "~"       PGUID 0 b t f 604 604  16   0   0   0   0 poly_contain intltsel intltjoinsel ));
-DATA(insert OID = 491 (  "~="      PGUID 0 b t f 604 604  16   0   0   0   0 poly_same intltsel intltjoinsel ));
+DATA(insert OID = 489 (  "@"       PGUID 0 b t f 604 604  16 490   0   0   0 poly_contained intltsel intltjoinsel ));
+DATA(insert OID = 490 (  "~"       PGUID 0 b t f 604 604  16 489   0   0   0 poly_contain intltsel intltjoinsel ));
+DATA(insert OID = 491 (  "~="      PGUID 0 b t f 604 604  16 491   0   0   0 poly_same intltsel intltjoinsel ));
 DATA(insert OID = 492 (  "&&"      PGUID 0 b t f 604 604  16   0   0   0   0 poly_overlap intltsel intltjoinsel ));
 DATA(insert OID = 493 (  "<<"      PGUID 0 b t f 603 603  16   0   0   0   0 box_left intltsel intltjoinsel ));
 DATA(insert OID = 494 (  "&<"      PGUID 0 b t f 603 603  16   0   0   0   0 box_overleft intltsel intltjoinsel ));
 DATA(insert OID = 495 (  "&>"      PGUID 0 b t f 603 603  16   0   0   0   0 box_overright intltsel intltjoinsel ));
 DATA(insert OID = 496 (  ">>"      PGUID 0 b t f 603 603  16   0   0   0   0 box_right intltsel intltjoinsel ));
-DATA(insert OID = 497 (  "@"       PGUID 0 b t f 603 603  16   0   0   0   0 box_contained intltsel intltjoinsel ));
-DATA(insert OID = 498 (  "~"       PGUID 0 b t f 603 603  16   0   0   0   0 box_contain intltsel intltjoinsel ));
-DATA(insert OID = 499 (  "~="      PGUID 0 b t f 603 603  16   0   0   0   0 box_same intltsel intltjoinsel ));
+DATA(insert OID = 497 (  "@"       PGUID 0 b t f 603 603  16 498   0   0   0 box_contained intltsel intltjoinsel ));
+DATA(insert OID = 498 (  "~"       PGUID 0 b t f 603 603  16 497   0   0   0 box_contain intltsel intltjoinsel ));
+DATA(insert OID = 499 (  "~="      PGUID 0 b t f 603 603  16 499   0   0   0 box_same intltsel intltjoinsel ));
 DATA(insert OID = 500 (  "&&"      PGUID 0 b t f 603 603  16   0   0   0   0 box_overlap intltsel intltjoinsel ));
-DATA(insert OID = 501 (  ">="      PGUID 0 b t f 603 603  16   0   0   0   0 box_ge areasel areajoinsel ));
-DATA(insert OID = 502 (  ">"       PGUID 0 b t f 603 603  16   0   0   0   0 box_gt areasel areajoinsel ));
-DATA(insert OID = 503 (  "="       PGUID 0 b t t 603 603  16   0   0   0   0 box_eq areasel areajoinsel ));
-DATA(insert OID = 504 (  "<"       PGUID 0 b t f 603 603  16   0   0   0   0 box_lt areasel areajoinsel ));
-DATA(insert OID = 505 (  "<="      PGUID 0 b t f 603 603  16   0   0   0   0 box_le areasel areajoinsel ));
-DATA(insert OID = 506 (  "!^"      PGUID 0 b t f 600 600  16   0   0   0   0 point_above intltsel intltjoinsel ));
-DATA(insert OID = 507 (  "!<"      PGUID 0 b t f 600 600  16   0   0   0   0 point_left intltsel intltjoinsel ));
-DATA(insert OID = 508 (  "!>"      PGUID 0 b t f 600 600  16   0   0   0   0 point_right intltsel intltjoinsel ));
-DATA(insert OID = 509 (  "!|"      PGUID 0 b t f 600 600  16   0   0   0   0 point_below intltsel intltjoinsel ));
-DATA(insert OID = 510 (  "=|="     PGUID 0 b t f 600 600  16   0   0   0   0 point_eq intltsel intltjoinsel ));
-DATA(insert OID = 511 (  "===>"    PGUID 0 b t f 600 603  16   0   0   0   0 on_pb intltsel intltjoinsel ));
-DATA(insert OID = 512 (  "===`"    PGUID 0 b t f 600 602  16   0   0   0   0 on_ppath intltsel intltjoinsel ));
+DATA(insert OID = 501 (  ">="      PGUID 0 b t f 603 603  16 505 504   0   0 box_ge areasel areajoinsel ));
+DATA(insert OID = 502 (  ">"       PGUID 0 b t f 603 603  16 504 505   0   0 box_gt areasel areajoinsel ));
+DATA(insert OID = 503 (  "="       PGUID 0 b t t 603 603  16 503   0   0   0 box_eq areasel areajoinsel ));
+DATA(insert OID = 504 (  "<"       PGUID 0 b t f 603 603  16 502 501   0   0 box_lt areasel areajoinsel ));
+DATA(insert OID = 505 (  "<="      PGUID 0 b t f 603 603  16 501 502   0   0 box_le areasel areajoinsel ));
+DATA(insert OID = 506 (  ">^"      PGUID 0 b t f 600 600  16   0   0   0   0 point_above intltsel intltjoinsel ));
+DATA(insert OID = 507 (  "<<"      PGUID 0 b t f 600 600  16   0   0   0   0 point_left intltsel intltjoinsel ));
+DATA(insert OID = 508 (  ">>"      PGUID 0 b t f 600 600  16   0   0   0   0 point_right intltsel intltjoinsel ));
+DATA(insert OID = 509 (  "<^"      PGUID 0 b t f 600 600  16   0   0   0   0 point_below intltsel intltjoinsel ));
+DATA(insert OID = 510 (  "~="      PGUID 0 b t f 600 600  16 510   0   0   0 point_eq intltsel intltjoinsel ));
+DATA(insert OID = 511 (  "@"       PGUID 0 b t f 600 603  16   0   0   0   0 on_pb intltsel intltjoinsel ));
+DATA(insert OID = 512 (  "@"       PGUID 0 b t f 600 602  16   0   0   0   0 on_ppath intltsel intltjoinsel ));
 DATA(insert OID = 513 (  "@@"      PGUID 0 l t f   0 603 600   0   0   0   0 box_center intltsel intltjoinsel ));
 DATA(insert OID = 514 (  "*"       PGUID 0 b t f  23  23  23 514   0   0   0 int4mul intltsel intltjoinsel ));
 DATA(insert OID = 515 (  "!"       PGUID 0 r t f  23   0  23   0   0   0   0 int4fac intltsel intltjoinsel ));
 DATA(insert OID = 516 (  "!!"      PGUID 0 l t f   0  23  23   0   0   0   0 int4fac intltsel intltjoinsel ));
-DATA(insert OID = 517 (  "<===>"   PGUID 0 b t f 600 600 701 517   0   0   0 point_distance intltsel intltjoinsel ));
+DATA(insert OID = 517 (  "<->"     PGUID 0 b t f 600 600 701 517   0   0   0 point_distance intltsel intltjoinsel ));
 DATA(insert OID = 518 (  "<>"      PGUID 0 b t f  23  23  16 518  96  0  0 int4ne neqsel neqjoinsel ));
 DATA(insert OID = 519 (  "<>"      PGUID 0 b t f  21  21  16 519  94  0  0 int2ne neqsel neqjoinsel ));
 DATA(insert OID = 520 (  ">"       PGUID 0 b t f  21  21  16  95   0  0  0 int2gt intgtsel intgtjoinsel ));
@@ -282,12 +283,12 @@ DATA(insert OID = 610 (  ">"       PGUID 0 b t f  26  26  16 609 611  0  0 int4g
 DATA(insert OID = 611 (  "<="      PGUID 0 b t f  26  26  16 612 610  0  0 int4le intltsel intltjoinsel ));
 DATA(insert OID = 612 (  ">="      PGUID 0 b t f  26  26  16 611 609  0  0 int4ge intgtsel intgtjoinsel ));
 
-DATA(insert OID = 613 (  "<===>"   PGUID 0 b t f 600 603 701 613   0  0  0 dist_pl intltsel intltjoinsel ));
-DATA(insert OID = 614 (  "<===>"   PGUID 0 b t f 600 601 701 614   0  0  0 dist_ps intltsel intltjoinsel ));
-DATA(insert OID = 615 (  "<===>"   PGUID 0 b t f 600 603 701 615   0  0  0 dist_pb intltsel intltjoinsel ));
-DATA(insert OID = 616 (  "<===>"   PGUID 0 b t f 600 603 701 616   0  0  0 dist_ps intltsel intltjoinsel ));
-DATA(insert OID = 617 (  "<===>"   PGUID 0 b t f 601 603 701 617   0  0  0 dist_sb intltsel intltjoinsel ));
-DATA(insert OID = 618 (  "<===>"   PGUID 0 b t f 600 602 701 618   0  0  0 dist_ppth intltsel intltjoinsel ));
+DATA(insert OID = 613 (  "<->"     PGUID 0 b t f 600 603 701   0   0  0  0 dist_pl - - ));
+DATA(insert OID = 614 (  "<->"     PGUID 0 b t f 600 601 701   0   0  0  0 dist_ps - - ));
+DATA(insert OID = 615 (  "<->"     PGUID 0 b t f 600 603 701   0   0  0  0 dist_pb - - ));
+DATA(insert OID = 616 (  "<->"     PGUID 0 b t f 601 628 701   0   0  0  0 dist_sl - - ));
+DATA(insert OID = 617 (  "<->"     PGUID 0 b t f 601 603 701   0   0  0  0 dist_sb - - ));
+DATA(insert OID = 618 (  "<->"     PGUID 0 b t f 600 602 701   0   0  0  0 dist_ppath - - ));
 
 DATA(insert OID = 619 (  "<"       PGUID 0 b t f 704 704  16   0   0  0  0 intervalct - - ));
 
@@ -319,13 +320,14 @@ DATA(insert OID = 642 (  "!~"      PGUID 0 b t f  25  25  16 0 641  0 0 textrege
 DATA(insert OID = 643 (  "<>"      PGUID 0 b t f  19  19  16 643 93 0 0 namene neqsel neqjoinsel ));
 DATA(insert OID = 644 (  "<>"      PGUID 0 b t f  20  20  16 644 1267 0 0 char16ne neqsel neqjoinsel ));
 DATA(insert OID = 645 (  "<"       PGUID 0 b t f  20  20  16 647 648  0 0 char16lt intltsel intltjoinsel ));
-DATA(insert OID = 646 (  "<="       PGUID 0 b t f  20  20  16 648 647  0 0 char16le intltsel intltjoinsel ));
+DATA(insert OID = 646 (  "<="      PGUID 0 b t f  20  20  16 648 647  0 0 char16le intltsel intltjoinsel ));
 DATA(insert OID = 647 (  ">"       PGUID 0 b t f  20  20  16 645 646  0 0 char16gt intltsel intltjoinsel ));
-DATA(insert OID = 648 (  ">="       PGUID 0 b t f  20  20  16 646 645  0 0 char16ge intltsel intltjoinsel ));
+DATA(insert OID = 648 (  ">="      PGUID 0 b t f  20  20  16 646 645  0 0 char16ge intltsel intltjoinsel ));
 DATA(insert OID = 649 (  "~"       PGUID 0 b t f  20  25  16 0 650  0 0 char16regexeq intltsel intltjoinsel ));
-DATA(insert OID = 650 (  "!~"       PGUID 0 b t f  20  25  16 650 0  0 0 char16regexne intltsel intltjoinsel ));
-DATA(insert OID = 651 (  "~~"       PGUID 0 b t f  20  25  16 0 651  0 0 char16like eqsel eqjoinsel ));
-DATA(insert OID = 652 (  "!~~"       PGUID 0 b t f  20  25  16 651 0  0 0 char16nlike neqsel neqjoinsel ));
+DATA(insert OID = 650 (  "!~"      PGUID 0 b t f  20  25  16 650 0  0 0 char16regexne intltsel intltjoinsel ));
+DATA(insert OID = 651 (  "~~"      PGUID 0 b t f  20  25  16 0 651  0 0 char16like eqsel eqjoinsel ));
+DATA(insert OID = 652 (  "!~~"     PGUID 0 b t f  20  25  16 651 0  0 0 char16nlike neqsel neqjoinsel ));
+DATA(insert OID = 654 (  "||"      PGUID 0 b t f  25  25  25   0 0  0 0 textcat - - ));
 
 DATA(insert OID = 660 (  "<"       PGUID 0 b t f  19  19  16 662 663  0 0 namelt intltsel intltjoinsel ));
 DATA(insert OID = 661 (  "<="      PGUID 0 b t f  19  19  16 663 662  0 0 namele intltsel intltjoinsel ));
@@ -353,21 +355,48 @@ DATA(insert OID = 681 (  "<>"      PGUID 0 b t f  911  911  16 681 678  0 0 oidn
 DATA(insert OID = 697 (  "~"       PGUID 0 b t f  411  25  16 0 698  0 0 char8regexeq eqsel eqjoinsel ));
 DATA(insert OID = 698 (  "!~"      PGUID 0 b t f  411  25  16 0 697  0 0 char8regexne neqsel neqjoinsel ));
 
-DATA(insert OID = 706 (  "<===>"   PGUID 0 b t f 603 603 701 706   0  0  0 box_distance intltsel intltjoinsel ));
-DATA(insert OID = 707 (  "<===>"   PGUID 0 b t f 602 602 701 707   0  0  0 path_distance intltsel intltjoinsel ));
-DATA(insert OID = 708 (  "<===>"   PGUID 0 b t f 603 603 701 708   0  0  0 line_distance intltsel intltjoinsel ));
-DATA(insert OID = 709 (  "<===>"   PGUID 0 b t f 601 601 701 709   0  0  0 lseg_distance intltsel intltjoinsel ));
+DATA(insert OID = 706 (  "<->"     PGUID 0 b t f 603 603 701 706   0  0  0 box_distance intltsel intltjoinsel ));
+DATA(insert OID = 707 (  "<->"     PGUID 0 b t f 602 602 701 707   0  0  0 path_distance intltsel intltjoinsel ));
+DATA(insert OID = 708 (  "<->"     PGUID 0 b t f 628 628 701 708   0  0  0 line_distance intltsel intltjoinsel ));
+DATA(insert OID = 709 (  "<->"     PGUID 0 b t f 601 601 701 709   0  0  0 lseg_distance intltsel intltjoinsel ));
+DATA(insert OID = 712 (  "<->"     PGUID 0 b t f 604 604 701 712   0  0  0 poly_distance intltsel intltjoinsel ));
 
 /* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */
-DATA(insert OID = 731 (  "+"     PGUID 0 b t f  600  600  600  731    0    0    0 point_add - - ));
-DATA(insert OID = 732 (  "-"     PGUID 0 b t f  600  600  600    0    0    0    0 point_sub - - ));
-DATA(insert OID = 733 (  "*"     PGUID 0 b t f  600  600  600  733    0    0    0 point_mul - - ));
-DATA(insert OID = 734 (  "/"     PGUID 0 b t f  600  600  600    0    0    0    0 point_div - - ));
-DATA(insert OID = 735 (  "+"     PGUID 0 b t f  602  602  602  735    0    0    0 path_add - - ));
-DATA(insert OID = 736 (  "+"     PGUID 0 b t f  602  600  602  736    0    0    0 path_add_pt - - ));
-DATA(insert OID = 737 (  "-"     PGUID 0 b t f  602  600  602    0    0    0    0 path_sub_pt - - ));
-DATA(insert OID = 738 (  "*"     PGUID 0 b t f  602  600  602  738    0    0    0 path_mul_pt - - ));
-DATA(insert OID = 739 (  "/"     PGUID 0 b t f  602  600  602    0    0    0    0 path_div_pt - - ));
+DATA(insert OID = 731 (  "+"       PGUID 0 b t f  600  600  600  731  0 0 0 point_add - - ));
+DATA(insert OID = 732 (  "-"       PGUID 0 b t f  600  600  600    0  0 0 0 point_sub - - ));
+DATA(insert OID = 733 (  "*"       PGUID 0 b t f  600  600  600  733  0 0 0 point_mul - - ));
+DATA(insert OID = 734 (  "/"       PGUID 0 b t f  600  600  600    0  0 0 0 point_div - - ));
+DATA(insert OID = 735 (  "+"       PGUID 0 b t f  602  602  602  735  0 0 0 path_add - - ));
+DATA(insert OID = 736 (  "+"       PGUID 0 b t f  602  600  602  736  0 0 0 path_add_pt - - ));
+DATA(insert OID = 737 (  "-"       PGUID 0 b t f  602  600  602    0  0 0 0 path_sub_pt - - ));
+DATA(insert OID = 738 (  "*"       PGUID 0 b t f  602  600  602  738  0 0 0 path_mul_pt - - ));
+DATA(insert OID = 739 (  "/"       PGUID 0 b t f  602  600  602    0  0 0 0 path_div_pt - - ));
+DATA(insert OID = 754 (  "@"       PGUID 0 b t f  600  602   16  755  0 0 0 pt_contained_path - - ));
+DATA(insert OID = 755 (  "~"       PGUID 0 b t f  602  600   16  754  0 0 0 path_contain_pt - - ));
+DATA(insert OID = 756 (  "@"       PGUID 0 b t f  600  604   16  757  0 0 0 pt_contained_poly - - ));
+DATA(insert OID = 757 (  "~"       PGUID 0 b t f  604  600   16  756  0 0 0 poly_contain_pt - - ));
+DATA(insert OID = 758 (  "@"       PGUID 0 b t f  600  718   16  759  0 0 0 pt_contained_circle - - ));
+DATA(insert OID = 759 (  "~"       PGUID 0 b t f  718  600   16  758  0 0 0 circle_contain_pt - - ));
+
+/* additional operators for geometric types - thomas 1997-07-09 */
+DATA(insert OID =  792 (  "="      PGUID 0 b t f  602  602  701  792  0 0 0 path_n_eq intltsel intltjoinsel ));
+DATA(insert OID =  793 (  "<"      PGUID 0 b t f  602  602  701  796  0 0 0 path_n_lt intltsel intltjoinsel ));
+DATA(insert OID =  794 (  ">"      PGUID 0 b t f  602  602  701  795  0 0 0 path_n_gt intltsel intltjoinsel ));
+DATA(insert OID =  795 (  "<="     PGUID 0 b t f  602  602  701  794  0 0 0 path_n_le intltsel intltjoinsel ));
+DATA(insert OID =  796 (  ">="     PGUID 0 b t f  602  602  701  793  0 0 0 path_n_ge intltsel intltjoinsel ));
+DATA(insert OID =  797 (  "#"      PGUID 0 l t f    0  602   23    0  0 0 0 path_npoints - - ));
+DATA(insert OID =  798 (  "?#"     PGUID 0 b t f  602  602   16    0  0 0 0 path_inter - - ));
+DATA(insert OID =  799 (  "??"     PGUID 0 l t f    0  602  701    0  0 0 0 path_length - - ));
+DATA(insert OID =  800 (  ">^"     PGUID 0 b t f  603  603   16    0  0 0 0 box_above intltsel intltjoinsel ));
+DATA(insert OID =  801 (  "<^"     PGUID 0 b t f  603  603   16    0  0 0 0 box_below intltsel intltjoinsel ));
+DATA(insert OID =  802 (  "?#"     PGUID 0 b t f  603  603   16    0  0 0 0 box_overlap - - ));
+DATA(insert OID =  803 (  "#"      PGUID 0 b t f  603  603  603    0  0 0 0 box_intersect - - ));
+DATA(insert OID =  804 (  "+"      PGUID 0 b t f  603  600  603  804  0 0 0 box_add - - ));
+DATA(insert OID =  805 (  "-"      PGUID 0 b t f  603  600  603    0  0 0 0 box_sub - - ));
+DATA(insert OID =  806 (  "*"      PGUID 0 b t f  603  600  603  806  0 0 0 box_mul - - ));
+DATA(insert OID =  807 (  "/"      PGUID 0 b t f  603  600  603    0  0 0 0 box_div - - ));
+DATA(insert OID =  808 (  "?-"     PGUID 0 b t f  600  600   16  808  0 0 0 point_horiz - - ));
+DATA(insert OID =  809 (  "?|"     PGUID 0 b t f  600  600   16  809  0 0 0 point_vert - - ));
 
 DATA(insert OID = 830 (  "<"       PGUID 0 b t f  810  810  16 834 833  0 0 oidint2lt intltsel intltjoinsel ));
 DATA(insert OID = 831 (  "<="      PGUID 0 b t f  810  810  16 833 834  0 0 oidint2le intltsel intltjoinsel ));
@@ -404,6 +433,14 @@ DATA(insert OID = 966 (  "+"       PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclinser
 DATA(insert OID = 967 (  "-"       PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclremove   intltsel intltjoinsel ));
 DATA(insert OID = 968 (  "~"       PGUID 0 b t f 1034 1033   16 0 0 0 0 aclcontains intltsel intltjoinsel ));
 
+/* additional geometric operators - thomas 1997-07-09 */
+DATA(insert OID =  969 (  "@@"     PGUID 0 l t f    0  601  600    0  0 0 0 lseg_center - - ));
+DATA(insert OID =  970 (  "@@"     PGUID 0 l t f    0  602  600    0  0 0 0 path_center - - ));
+DATA(insert OID =  971 (  "@@"     PGUID 0 l t f    0  604  600    0  0 0 0 poly_center - - ));
+
+DATA(insert OID =  974 (  "||"     PGUID 0 b t f 1042 1042 1042    0  0 0 0 textcat - - ));
+DATA(insert OID =  979 (  "||"     PGUID 0 b t f 1043 1043 1043    0  0 0 0 textcat - - ));
+
 DATA(insert OID = 1054 ( "="       PGUID 0 b t t 1042 1042   16 1054 1057 1058 1058 bpchareq eqsel eqjoinsel ));
 DATA(insert OID = 1055 (  "~"      PGUID 0 b t f 1042   25   16    0 1056  0 0 textregexeq eqsel eqjoinsel ));
 DATA(insert OID = 1056 ( "!~"      PGUID 0 b t f 1042   25   16    0 1055  0 0 textregexne neqsel neqjoinsel ));
@@ -509,8 +546,6 @@ DATA(insert OID = 1211 (  "~~"    PGUID 0 b t f  1042 25  16 0 1212 0 0 textlike
 DATA(insert OID = 1212 (  "!~~"   PGUID 0 b t f  1042 25  16 0 1211 0 0 textnlike neqsel neqjoinsel ));
 DATA(insert OID = 1213 (  "~~"    PGUID 0 b t f  1043 25  16 0 1214 0 0 textlike eqsel eqjoinsel ));
 DATA(insert OID = 1214 (  "!~~"   PGUID 0 b t f  1043 25  16 0 1213 0 0 textnlike neqsel neqjoinsel ));
-DATA(insert OID = 1215 (  "~~"    PGUID 0 b t f  20   25  16 0 1216 0 0 char16like eqsel eqjoinsel ));
-DATA(insert OID = 1216 (  "!~~"   PGUID 0 b t f  20   25  16 0 1215 0 0 char16nlike neqsel neqjoinsel ));
 
 /* case-insensitive LIKE hacks */
 DATA(insert OID = 1220 (  "~*"       PGUID 0 b t f  409  25  16 0 1221  0 0 char2icregexeq eqsel eqjoinsel ));
@@ -537,7 +572,8 @@ DATA(insert OID = 1303 (  ">"       PGUID 0 b t f  1296 1296 16 1302 1304 0 0 ti
 DATA(insert OID = 1304 (  "<="      PGUID 0 b t f  1296 1296 16 1305 1303 0 0 timestample intltsel intltjoinsel ));
 DATA(insert OID = 1305 (  ">="      PGUID 0 b t f  1296 1296 16 1304 1302 0 0 timestampge intltsel intltjoinsel ));
 
-/* additional geometric operators - tgl 97/04/18 */
+/* additional geometric operators - thomas 97/04/18 */
+DATA(insert OID = 1420 (  "@@"    PGUID 0 l t f    0  718  600    0    0    0    0 circle_center - - ));
 DATA(insert OID = 1500 (  "="     PGUID 0 b t t  718  718   16 1500 1501 1502 1502 circle_eq eqsel eqjoinsel ));
 DATA(insert OID = 1501 (  "<>"    PGUID 0 b t f  718  718   16 1501 1500    0    0 circle_ne neqsel neqjoinsel ));
 DATA(insert OID = 1502 (  "<"     PGUID 0 b t f  718  718   16    0    0    0    0 circle_lt areasel areajoinsel ));
@@ -549,21 +585,49 @@ DATA(insert OID = 1506 (  "<<"    PGUID 0 b t f  718  718   16    0    0    0
 DATA(insert OID = 1507 (  "&<"    PGUID 0 b t f  718  718   16    0    0    0    0 circle_overleft intltsel intltjoinsel ));
 DATA(insert OID = 1508 (  "&>"    PGUID 0 b t f  718  718   16    0    0    0    0 circle_overright intltsel intltjoinsel ));
 DATA(insert OID = 1509 (  ">>"    PGUID 0 b t f  718  718   16    0    0    0    0 circle_right intltsel intltjoinsel ));
-DATA(insert OID = 1510 (  "@"     PGUID 0 b t f  718  718   16    0    0    0    0 circle_contained intltsel intltjoinsel ));
-DATA(insert OID = 1511 (  "~"     PGUID 0 b t f  718  718   16    0    0    0    0 circle_contain intltsel intltjoinsel ));
+DATA(insert OID = 1510 (  "@"     PGUID 0 b t f  718  718   16 1511    0    0    0 circle_contained intltsel intltjoinsel ));
+DATA(insert OID = 1511 (  "~"     PGUID 0 b t f  718  718   16 1510    0    0    0 circle_contain intltsel intltjoinsel ));
 DATA(insert OID = 1512 (  "~="    PGUID 0 b t f  718  718   16 1512    0    0    0 circle_same intltsel intltjoinsel ));
 DATA(insert OID = 1513 (  "&&"    PGUID 0 b t f  718  718   16    0    0    0    0 circle_overlap intltsel intltjoinsel ));
-DATA(insert OID = 1514 (  "!^"    PGUID 0 b t f  718  718   16    0    0    0    0 circle_above intltsel intltjoinsel ));
-DATA(insert OID = 1515 (  "!|"    PGUID 0 b t f  718  718   16    0    0    0    0 circle_below intltsel intltjoinsel ));
+DATA(insert OID = 1514 (  ">^"    PGUID 0 b t f  718  718   16    0    0    0    0 circle_above intltsel intltjoinsel ));
+DATA(insert OID = 1515 (  "<^"    PGUID 0 b t f  718  718   16    0    0    0    0 circle_below intltsel intltjoinsel ));
 
 DATA(insert OID = 1516 (  "+"     PGUID 0 b t f  718  600  718 1516    0    0    0 circle_add_pt - - ));
 DATA(insert OID = 1517 (  "-"     PGUID 0 b t f  718  600  718    0    0    0    0 circle_sub_pt - - ));
 DATA(insert OID = 1518 (  "*"     PGUID 0 b t f  718  600  718 1518    0    0    0 circle_mul_pt - - ));
 DATA(insert OID = 1519 (  "/"     PGUID 0 b t f  718  600  718    0    0    0    0 circle_div_pt - - ));
 
-DATA(insert OID = 1520 (  "<===>" PGUID 0 b t f  718  718  701 1520    0    0    0 circle_distance intltsel intltjoinsel ));
+DATA(insert OID = 1520 (  "<->"   PGUID 0 b t f  718  718  701 1520    0    0    0 circle_distance intltsel intltjoinsel ));
 DATA(insert OID = 1521 (  "#"     PGUID 0 l t f    0  604   23    0    0    0    0 poly_npoints - - ));
-DATA(insert OID = 1522 (  "<===>" PGUID 0 b t f  600  718  701 1522    0    0    0 dist_pc intltsel intltjoinsel ));
+DATA(insert OID = 1522 (  "<->"   PGUID 0 b t f  600  718  701 1522    0    0    0 dist_pc intltsel intltjoinsel ));
+DATA(insert OID = 1523 (  "<->"   PGUID 0 b t f  718  604  701 1523    0    0    0 dist_cpoly intltsel intltjoinsel ));
+
+/* additional geometric operators - thomas 1997-07-09 */
+DATA(insert OID = 1524 (  "<->"   PGUID 0 b t f  628  603  701 1524  0 0 0 dist_lb - - ));
+
+DATA(insert OID = 1525 (  "?#"    PGUID 0 b t f  601  601   16 1525  0 0 0 lseg_intersect - - ));
+DATA(insert OID = 1526 (  "?||"   PGUID 0 b t f  601  601   16 1526  0 0 0 lseg_parallel - - ));
+DATA(insert OID = 1527 (  "?-|"   PGUID 0 b t f  601  601   16 1527  0 0 0 lseg_perp - - ));
+DATA(insert OID = 1528 (  "?-"    PGUID 0 l t f    0  601   16 1528  0 0 0 lseg_horizontal - - ));
+DATA(insert OID = 1529 (  "?|"    PGUID 0 l t f    0  601   16 1529  0 0 0 lseg_vertical - - ));
+DATA(insert OID = 1535 (  "="     PGUID 0 b t f  601  601   16 1535  0 0 0 lseg_eq intltsel - ));
+DATA(insert OID = 1536 (  "#"     PGUID 0 b t f  601  601  600 1536  0 0 0 lseg_interpt - - ));
+DATA(insert OID = 1537 (  "?#"    PGUID 0 b t f  601  628   16 1537  0 0 0 inter_sl - - ));
+DATA(insert OID = 1538 (  "?#"    PGUID 0 b t f  601  603   16 1538  0 0 0 inter_sb - - ));
+DATA(insert OID = 1539 (  "?#"    PGUID 0 b t f  628  603   16 1539  0 0 0 inter_lb - - ));
+
+DATA(insert OID = 1546 (  "@"     PGUID 0 b t f  600  628   16    0  0 0 0 on_pl - - ));
+DATA(insert OID = 1547 (  "@"     PGUID 0 b t f  600  601   16    0  0 0 0 on_ps - - ));
+DATA(insert OID = 1548 (  "@"     PGUID 0 b t f  601  628   16    0  0 0 0 on_sl - - ));
+DATA(insert OID = 1549 (  "@"     PGUID 0 b t f  601  603   16    0  0 0 0 on_sb - - ));
+
+DATA(insert OID = 1557 (  "##"    PGUID 0 b t f  600  628  600    0  0 0 0 close_pl - - ));
+DATA(insert OID = 1558 (  "##"    PGUID 0 b t f  600  601  600    0  0 0 0 close_ps - - ));
+DATA(insert OID = 1559 (  "##"    PGUID 0 b t f  600  603  600    0  0 0 0 close_pb - - ));
+
+DATA(insert OID = 1566 (  "##"    PGUID 0 b t f  601  628  600    0  0 0 0 close_sl - - ));
+DATA(insert OID = 1567 (  "##"    PGUID 0 b t f  601  603  600    0  0 0 0 close_sb - - ));
+DATA(insert OID = 1568 (  "##"    PGUID 0 b t f  628  603  600    0  0 0 0 close_lb - - ));
 
 /*
  * function prototypes
index 510b9da28f317a037596c327bfcc605f1e305d64..52e12cfc8f39eefa153bdb6923ff1d418424cf15 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_proc.h,v 1.23 1997/06/03 14:11:28 thomas Exp $
+ * $Id: pg_proc.h,v 1.24 1997/07/29 16:17:52 thomas Exp $
  *
  * NOTES
  *    The script catalog/genbki.sh reads this file and generates .bki
@@ -180,7 +180,8 @@ DATA(insert OID = 106 (  neqjoinsel        PGUID 11 f t f 5 f 701 "26 26 21 26 2
 DATA(insert OID = 107 (  intltjoinsel      PGUID 11 f t f 5 f 701 "26 26 21 26 21" 100 0 0 100  foo bar ));
 DATA(insert OID = 108 (  intgtjoinsel      PGUID 11 f t f 5 f 701 "26 26 21 26 21" 100 0 0 100  foo bar ));
 
-
+DATA(insert OID = 115 (  box_above         PGUID 11 f t f 2 f  16 "603 603" 100 1 0 100  foo bar ));
+DATA(insert OID = 116 (  box_below         PGUID 11 f t f 2 f  16 "603 603" 100 1 0 100  foo bar ));
 
 DATA(insert OID = 117 (  point_in          PGUID 11 f t f 1 f 600 "0" 100 0 0 100  foo bar ));
 DATA(insert OID = 118 (  point_out         PGUID 11 f t f 1 f 23  "0" 100 0 0 100  foo bar ));
@@ -297,6 +298,11 @@ DATA(insert OID = 221 (  float8abs         PGUID 11 f t f 1 f 701 "701" 100 0 0
 DATA(insert OID = 222 (  float8inc         PGUID 11 f t f 1 f 701 "701" 100 0 0 100  foo bar ));
 DATA(insert OID = 223 (  float8larger      PGUID 11 f t f 2 f 701 "701 701" 100 0 0 100  foo bar ));
 DATA(insert OID = 224 (  float8smaller     PGUID 11 f t f 2 f 701 "701 701" 100 0 0 100  foo bar ));
+
+DATA(insert OID = 225 (  lseg_center       PGUID 11 f t f 1 f 600 "601" 100 0 0 100  foo bar ));
+DATA(insert OID = 226 (  path_center       PGUID 11 f t f 1 f 600 "602" 100 0 0 100  foo bar ));
+DATA(insert OID = 227 (  poly_center       PGUID 11 f t f 1 f 600 "604" 100 0 0 100  foo bar ));
+
 DATA(insert OID = 228 (  dround            PGUID 11 f t f 1 f 701 "701" 100 0 0 100  foo bar ));
 DATA(insert OID = 229 (  dtrunc            PGUID 11 f t f 1 f 701 "701" 100 0 0 100  foo bar ));
 DATA(insert OID = 230 (  dsqrt             PGUID 11 f t f 1 f 701 "701" 100 0 0 100  foo bar ));
@@ -309,6 +315,7 @@ DATA(insert OID = 235 (  i2tod             PGUID 11 f t f 1 f 701  "21" 100 0 0
 DATA(insert OID = 236 (  i2tof             PGUID 11 f t f 1 f 700  "21" 100 0 0 100  foo bar ));
 DATA(insert OID = 237 (  dtoi2             PGUID 11 f t f 1 f  21 "701" 100 0 0 100  foo bar ));
 DATA(insert OID = 238 (  ftoi2             PGUID 11 f t f 1 f  21 "700" 100 0 0 100  foo bar ));
+DATA(insert OID = 239 (  line_distance     PGUID 11 f t f 2 f 701 "628 628" 100 0 0 100  foo bar ));
 
 DATA(insert OID = 240 (  nabstimein        PGUID 11 f t f 1 f 702 "0" 100 0 0 100  foo bar ));
 DATA(insert OID = 241 (  nabstimeout       PGUID 11 f t f 1 f 23  "0" 100 0 0 100  foo bar ));
@@ -348,6 +355,10 @@ DATA(insert OID = 274 (  timeofday         PGUID 11 f t f 0 f 25 "0" 100 0 0 100
 DATA(insert OID = 275 (  abstime_finite    PGUID 11 f t f 1 f 16 "702" 100 0 0 100  foo bar ));
 
 DATA(insert OID = 276 (  int2fac           PGUID 11 f t f 1 f 21 "21" 100 0 0 100  foo bar ));
+
+DATA(insert OID = 277 (  inter_sl          PGUID 11 f t f 2 f 16 "601 628" 100 0 0 100  foo bar ));
+DATA(insert OID = 278 (  inter_lb          PGUID 11 f t f 2 f 16 "628 603" 100 0 0 100  foo bar ));
+
 DATA(insert OID = 279 (  float48mul        PGUID 11 f t f 2 f 701 "700 701" 100 0 0 100  foo bar ));
 DATA(insert OID = 280 (  float48div        PGUID 11 f t f 2 f 701 "700 701" 100 0 0 100  foo bar ));
 DATA(insert OID = 281 (  float48pl         PGUID 11 f t f 2 f 701 "700 701" 100 0 0 100  foo bar ));
@@ -449,7 +460,7 @@ DATA(insert OID = 367 (  close_pb          PGUID 11 f t f 2 f 600 "600 603" 100
 DATA(insert OID = 368 (  close_sb          PGUID 11 f t f 2 f 600 "601 603" 100 0 0 100  foo bar ));
 DATA(insert OID = 369 (  on_ps             PGUID 11 f t f 2 f 16 "600 601" 100 0 0 100  foo bar ));
 DATA(insert OID = 370 (  path_distance     PGUID 11 f t f 2 f 701 "602 602" 100 0 1 0 foo bar ));
-DATA(insert OID = 371 (  dist_ppth         PGUID 11 f t f 2 f 701 "600 602" 100 0 1 0 foo bar ));
+DATA(insert OID = 371 (  dist_ppath        PGUID 11 f t f 2 f 701 "600 602" 100 0 1 0 foo bar ));
 DATA(insert OID = 372 (  on_sb             PGUID 11 f t f 2 f 16 "601 603" 100 0 0 100  foo bar ));
 DATA(insert OID = 373 (  inter_sb          PGUID 11 f t f 2 f 16 "601 603" 100 0 0 100  foo bar ));
 DATA(insert OID = 1274 (  btchar16cmp      PGUID 11 f t f 2 f 23 "19 19" 100 0 0 100  foo bar ));
@@ -553,9 +564,11 @@ DATA(insert OID = 722 (  byteaSetByte         PGUID 11 f t f 3 f 17 "17 23 23" 100 0
 DATA(insert OID = 723 (  byteaGetBit      PGUID 11 f t f 2 f 23 "17 23" 100 0 0 100  foo bar ));
 DATA(insert OID = 724 (  byteaSetBit      PGUID 11 f t f 3 f 17 "17 23 23" 100 0 0 100  foo bar ));
 
-DATA(insert OID = 725 (  dist_pl           PGUID 11 f t f 2 f 701 "600 654" 100 0 0 100  foo bar ));
-DATA(insert OID = 726 (  dist_lb           PGUID 11 f t f 2 f 701 "654 603" 100 0 0 100  foo bar ));
-DATA(insert OID = 727 (  dist_sl           PGUID 11 f t f 2 f 701 "601 654" 100 0 0 100  foo bar ));
+DATA(insert OID = 725 (  dist_pl           PGUID 11 f t f 2 f 701 "600 628" 100 0 0 100  foo bar ));
+DATA(insert OID = 726 (  dist_lb           PGUID 11 f t f 2 f 701 "628 603" 100 0 0 100  foo bar ));
+DATA(insert OID = 727 (  dist_sl           PGUID 11 f t f 2 f 701 "601 628" 100 0 0 100  foo bar ));
+DATA(insert OID = 728 (  dist_cpoly        PGUID 11 f t f 2 f 701 "718 604" 100 0 0 100  foo bar ));
+DATA(insert OID = 729 (  poly_distance     PGUID 11 f t f 2 f 701 "604 604" 100 0 0 100  foo bar ));
 
 DATA(insert OID = 730 (  pqtest            PGUID 11 f t f 1 f 23 "25" 100 0 0 100  foo bar ));
 
@@ -622,6 +635,7 @@ DATA(insert OID =  837 (  char2regexne     PGUID 11 f t f 2 f 16 "409 25" 100 0
 DATA(insert OID =  836 (  char4regexeq     PGUID 11 f t f 2 f 16 "410 25" 100 0 0 100  foo bar ));
 DATA(insert OID =  838 (  char4regexne     PGUID 11 f t f 2 f 16 "410 25" 100 0 0 100  foo bar ));
 
+DATA(insert OID =  849 (  textpos          PGUID 11 f t f 2 f 23 "25 25" 100 0 1 0 foo bar ));
 DATA(insert OID =  850 (  textlike         PGUID 11 f t f 2 f 16 "25 25" 100 0 1 0 foo bar ));
 DATA(insert OID =  851 (  textnlike        PGUID 11 f t f 2 f 16 "25 25" 100 0 1 0 foo bar ));
 DATA(insert OID =  852 (  char2like        PGUID 11 f t f 2 f 16 "409 25" 100 0 0 100  foo bar ));
@@ -651,7 +665,6 @@ DATA(insert OID =  898 (  cashlarger       PGUID 11 f t f 2 f 790 "790 790" 100
 DATA(insert OID =  899 (  cashsmaller      PGUID 11 f t f 2 f 790 "790 790" 100 0 0 100  foo bar ));
 
 /* OIDS 900 - 999 */
-
 DATA(insert OID = 920 (  oidint4in        PGUID 11 f t f 1 f 910 "0" 100 0 0 100  foo bar));
 DATA(insert OID = 921 (  oidint4out       PGUID 11 f t f 1 f 19 "0" 100 0 0 100  foo bar));
 DATA(insert OID = 922 (  oidint4lt        PGUID 11 f t f 2 f 16 "910 910" 100 0 0 100  foo bar));
@@ -693,14 +706,19 @@ DATA(insert OID = 955 (  lowrite           PGUID 11 f t f 2 f 23 "23 17" 100 0 0
 DATA(insert OID = 956 (  lo_lseek          PGUID 11 f t f 3 f 23 "23 23 23" 100 0 0 100  foo bar ));
 DATA(insert OID = 957 (  lo_creat          PGUID 11 f t f 1 f 26 "23" 100 0 0 100  foo bar ));
 DATA(insert OID = 958 (  lo_tell           PGUID 11 f t f 1 f 23 "23" 100 0 0 100  foo bar ));
-DATA(insert OID = 964 (  lo_unlink         PGUID 11 f t f 1 f 23 "23" 100 0 0 100  foo bar ));
 
-DATA(insert OID = 972 (  regproctooid      PGUID 11 f t f 1 f 26 "24" 100 0 0 100  foo bar ));
+DATA(insert OID = 959 (  on_pl             PGUID 11 f t f 2 f  16 "600 628" 100 0 10 100  foo bar ));
+DATA(insert OID = 960 (  on_sl             PGUID 11 f t f 2 f  16 "601 628" 100 0 10 100  foo bar ));
+DATA(insert OID = 961 (  close_pl          PGUID 11 f t f 2 f 600 "600 628" 100 0 10 100  foo bar ));
+DATA(insert OID = 962 (  close_sl          PGUID 11 f t f 2 f 600 "601 628" 100 0 10 100  foo bar ));
+DATA(insert OID = 963 (  close_lb          PGUID 11 f t f 2 f 600 "628 603" 100 0 10 100  foo bar ));
+
+DATA(insert OID = 964 (  lo_unlink         PGUID 11 f t f 1 f  23 "23" 100 0 0 100  foo bar ));
+DATA(insert OID = 972 (  regproctooid      PGUID 11 f t f 1 f  26 "24" 100 0 0 100  foo bar ));
 
-DATA(insert OID = 973 (  path_inter        PGUID 11 f t f 2 f 16 "602 602" 100 0 10 100  foo bar ));
-DATA(insert OID = 974 (  box_copy          PGUID 11 f t f 1 f 603 "603" 100 0 0 100  foo bar ));
+DATA(insert OID = 973 (  path_inter        PGUID 11 f t f 2 f  16 "602 602" 100 0 10 100  foo bar ));
 DATA(insert OID = 975 (  box_area          PGUID 11 f t f 1 f 701 "603" 100 0 0 100  foo bar ));
-DATA(insert OID = 976 (  box_length        PGUID 11 f t f 1 f 701 "603" 100 0 0 100  foo bar ));
+DATA(insert OID = 976 (  box_width         PGUID 11 f t f 1 f 701 "603" 100 0 0 100  foo bar ));
 DATA(insert OID = 977 (  box_height        PGUID 11 f t f 1 f 701 "603" 100 0 0 100  foo bar ));
 DATA(insert OID = 978 (  box_distance      PGUID 11 f t f 2 f 701 "603 603" 100 0 0 100  foo bar ));
 DATA(insert OID = 980 (  box_intersect     PGUID 11 f t f 2 f 603 "603 603" 100 0 0 100  foo bar ));
@@ -711,7 +729,6 @@ DATA(insert OID = 984 (  path_n_eq         PGUID 11 f t f 2 f 16 "602 602" 100 0
 DATA(insert OID = 985 (  path_n_le         PGUID 11 f t f 2 f 16 "602 602" 100 0 0 100  foo bar ));
 DATA(insert OID = 986 (  path_n_ge         PGUID 11 f t f 2 f 16 "602 602" 100 0 0 100  foo bar ));
 DATA(insert OID = 987 (  path_length       PGUID 11 f t f 1 f 701 "602" 100 0 1 0  foo bar ));
-DATA(insert OID = 988 (  point_copy        PGUID 11 f t f 1 f 600 "600" 100 0 0 100  foo bar ));
 DATA(insert OID = 989 (  point_vert        PGUID 11 f t f 2 f 16 "600 600" 100 0 0 100  foo bar ));
 DATA(insert OID = 990 (  point_horiz       PGUID 11 f t f 2 f 16 "600 600" 100 0 0 100  foo bar ));
 DATA(insert OID = 991 (  point_distance    PGUID 11 f t f 2 f 701 "600 600" 100 0 0 100  foo bar ));
@@ -786,16 +803,21 @@ DATA(insert OID = 1143 (  time_in          PGUID 11 f t f 1 f 1083 "0" 100 0 0 1
 DATA(insert OID = 1144 (  time_out         PGUID 11 f t f 1 f 23 "0" 100 0 0 100  foo bar ));
 DATA(insert OID = 1145 (  time_eq          PGUID 11 f t f 2 f 16 "1083 1083" 100 0 0 100  foo bar ));
 
+DATA(insert OID = 1146 (  circle_add_pt    PGUID 11 f t f 2 f 718 "718 600" 100 0 0 100  foo bar ));
+DATA(insert OID = 1147 (  circle_sub_pt    PGUID 11 f t f 2 f 718 "718 600" 100 0 0 100  foo bar ));
+DATA(insert OID = 1148 (  circle_mul_pt    PGUID 11 f t f 2 f 718 "718 600" 100 0 0 100  foo bar ));
+DATA(insert OID = 1149 (  circle_div_pt    PGUID 11 f t f 2 f 718 "718 600" 100 0 0 100  foo bar ));
+
 DATA(insert OID = 1150 (  datetime_in      PGUID 11 f t f 1 f 1184 "0" 100 0 0 100  foo bar ));
-DATA(insert OID = 1151 (  datetime_out     PGUID 11 f t f 1 f 23 "0" 100 0 0 100  foo bar ));
-DATA(insert OID = 1152 (  datetime_eq      PGUID 11 f t f 2 f 16 "1184 1184" 100 0 0 100  foo bar ));
-DATA(insert OID = 1153 (  datetime_ne      PGUID 11 f t f 2 f 16 "1184 1184" 100 0 0 100  foo bar ));
-DATA(insert OID = 1154 (  datetime_lt      PGUID 11 f t f 2 f 16 "1184 1184" 100 0 0 100  foo bar ));
-DATA(insert OID = 1155 (  datetime_le      PGUID 11 f t f 2 f 16 "1184 1184" 100 0 0 100  foo bar ));
-DATA(insert OID = 1156 (  datetime_ge      PGUID 11 f t f 2 f 16 "1184 1184" 100 0 0 100  foo bar ));
-DATA(insert OID = 1157 (  datetime_gt      PGUID 11 f t f 2 f 16 "1184 1184" 100 0 0 100  foo bar ));
-DATA(insert OID = 1158 (  datetime_finite  PGUID 11 f t f 1 f 16 "1184" 100 0 0 100  foo bar ));
-/* reserve OIDs 1159 for additional date/time conversion routines! tgl 97/03/19 */
+DATA(insert OID = 1151 (  datetime_out     PGUID 11 f t f 1 f   23 "0" 100 0 0 100  foo bar ));
+DATA(insert OID = 1152 (  datetime_eq      PGUID 11 f t f 2 f   16 "1184 1184" 100 0 0 100  foo bar ));
+DATA(insert OID = 1153 (  datetime_ne      PGUID 11 f t f 2 f   16 "1184 1184" 100 0 0 100  foo bar ));
+DATA(insert OID = 1154 (  datetime_lt      PGUID 11 f t f 2 f   16 "1184 1184" 100 0 0 100  foo bar ));
+DATA(insert OID = 1155 (  datetime_le      PGUID 11 f t f 2 f   16 "1184 1184" 100 0 0 100  foo bar ));
+DATA(insert OID = 1156 (  datetime_ge      PGUID 11 f t f 2 f   16 "1184 1184" 100 0 0 100  foo bar ));
+DATA(insert OID = 1157 (  datetime_gt      PGUID 11 f t f 2 f   16 "1184 1184" 100 0 0 100  foo bar ));
+DATA(insert OID = 1158 (  datetime_finite  PGUID 11 f t f 1 f   16 "1184" 100 0 0 100  foo bar ));
+DATA(insert OID = 1159 (  datetime_zone    PGUID 11 f t f 2 f   25 "25 1184" 100 0 0 100  foo bar ));
 
 DATA(insert OID = 1160 (  timespan_in      PGUID 11 f t f 1 f 1186 "0" 100 0 0 100  foo bar ));
 DATA(insert OID = 1161 (  timespan_out     PGUID 11 f t f 1 f 23 "0" 100 0 0 100  foo bar ));
@@ -831,11 +853,14 @@ DATA(insert OID = 1195 (  datetime_smaller   PGUID 11 f t f 2 f 1184 "1184 1184"
 DATA(insert OID = 1196 (  datetime_larger    PGUID 11 f t f 2 f 1184 "1184 1184" 100 0 0 100  foo bar ));
 DATA(insert OID = 1197 (  timespan_smaller   PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100  foo bar ));
 DATA(insert OID = 1198 (  timespan_larger    PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100  foo bar ));
-/* reserve OIDs 1199 for additional date/time conversion routines! tgl 97/03/19 */
+DATA(insert OID = 1199 (  datetime_age       PGUID 11 f t f 2 f 1186 "1184 1184" 100 0 0 100  foo bar ));
 
 /* OIDS 1200 - 1299 */
 
-DATA(insert OID = 1200 (  int42reltime     PGUID 11 f t f 1 f 703 "21" 100 0 0 100  foo bar ));
+DATA(insert OID = 1200 (  int42reltime     PGUID 11 f t f 1 f  703 "21" 100 0 0 100  foo bar ));
+
+DATA(insert OID = 1217 (  datetime_trunc   PGUID 11 f t f 2 f 1184 "25 1184" 100 0 0 100  foo bar ));
+DATA(insert OID = 1218 (  timespan_trunc   PGUID 11 f t f 2 f 1186 "25 1186" 100 0 0 100  foo bar ));
 
 DATA(insert OID = 1290 (  char2icregexeq   PGUID 11 f t f 2 f 16 "409 25" 100 0 0 100  foo bar ));
 DATA(insert OID = 1291 (  char2icregexne   PGUID 11 f t f 2 f 16 "409 25" 100 0 0 100  foo bar ));
@@ -864,6 +889,7 @@ DATA(insert OID = 1310 (  timestample      PGUID 11 f t f 2 f 16 "1296 1296" 100
 DATA(insert OID = 1311 (  timestampge      PGUID 11 f t f 2 f 16 "1296 1296" 100 0 0 100  foo bar ));
 /* reserve OIDs 1312-1319 for additional date/time conversion routines! tgl 97/04/01 */
 
+DATA(insert OID = 1339 (  date_zone    PGUID 14 f t f 2 f   25 "25 1184" 100 0 0 100  "select datetime_zone($1, $2)" - ));
 DATA(insert OID = 1340 (  text         PGUID 14 f t f 1 f   25 "1184" 100 0 0 100  "select datetime_text($1)" - ));
 DATA(insert OID = 1341 (  text         PGUID 14 f t f 1 f   25 "1186" 100 0 0 100  "select timespan_text($1)" - ));
 /* reserve OIDs 1339-1349 for additional date/time conversion routines! tgl 97/04/01 */
@@ -896,6 +922,10 @@ DATA(insert OID = 1382 (  date_part    PGUID 14 f t f 2 f  701 "25 702" 100 0 0
 DATA(insert OID = 1383 (  date_part    PGUID 14 f t f 2 f  701 "25 703" 100 0 0 100  "select timespan_part($1, timespan($2))" - ));
 DATA(insert OID = 1384 (  date_part    PGUID 14 f t f 2 f  701 "25 1082" 100 0 0 100  "select datetime_part($1, datetime($2))" - ));
 DATA(insert OID = 1385 (  date_part    PGUID 14 f t f 2 f  701 "25 1083" 100 0 0 100  "select timespan_part($1, timespan($2))" - ));
+DATA(insert OID = 1386 (  date_trunc   PGUID 14 f t f 2 f 1184 "25 1184" 100 0 0 100  "select datetime_trunc($1, $2)" - ));
+DATA(insert OID = 1387 (  date_trunc   PGUID 14 f t f 2 f 1186 "25 1186" 100 0 0 100  "select timespan_trunc($1, $2)" - ));
+DATA(insert OID = 1388 (  age          PGUID 14 f t f 2 f 1186 "1184 1184" 100 0 0 100  "select datetime_age($1, $2)" - ));
+DATA(insert OID = 1389 (  age          PGUID 14 f t f 1 f 1186 "1184" 100 0 0 100  "select datetime_age(\'today\', $1)" - ));
 
 DATA(insert OID = 1390 (  isfinite     PGUID 14 f t f 1 f   16 "1184" 100 0 0 100  "select datetime_finite($1)" - ));
 DATA(insert OID = 1391 (  isfinite     PGUID 14 f t f 1 f   16 "1186" 100 0 0 100  "select timespan_finite($1)" - ));
@@ -931,6 +961,10 @@ DATA(insert OID = 1422 (  box_add           PGUID 11 f t f 2 f 603 "603 600" 100
 DATA(insert OID = 1423 (  box_sub           PGUID 11 f t f 2 f 603 "603 600" 100 0 0 100  foo bar ));
 DATA(insert OID = 1424 (  box_mul           PGUID 11 f t f 2 f 603 "603 600" 100 0 0 100  foo bar ));
 DATA(insert OID = 1425 (  box_div           PGUID 11 f t f 2 f 603 "603 600" 100 0 0 100  foo bar ));
+DATA(insert OID = 1426 (  path_contain_pt   PGUID 11 f t f 2 f  16 "601 600" 100 0 0 100  foo bar ));
+DATA(insert OID = 1427 (  pt_contained_path PGUID 11 f t f 2 f  16 "600 601" 100 0 0 100  foo bar ));
+DATA(insert OID = 1428 (  poly_contain_pt   PGUID 11 f t f 2 f  16 "604 600" 100 0 0 100  foo bar ));
+DATA(insert OID = 1429 (  pt_contained_poly PGUID 11 f t f 2 f  16 "600 604" 100 0 0 100  foo bar ));
 
 DATA(insert OID = 1430 (  path_isclosed     PGUID 11 f t f 1 f  16 "602" 100 0 0 100  foo bar ));
 DATA(insert OID = 1431 (  path_isopen       PGUID 11 f t f 1 f  16 "602" 100 0 0 100  foo bar ));
@@ -982,6 +1016,10 @@ DATA(insert OID = 1473 (  circle            PGUID 11 f t f 2 f 718 "600 701" 100
 DATA(insert OID = 1474 (  poly_circle       PGUID 11 f t f 1 f 718 "604" 100 0 1 0  foo bar ));
 DATA(insert OID = 1475 (  circle_poly       PGUID 11 f t f 2 f 604 "23 718" 100 0 1 0  foo bar ));
 DATA(insert OID = 1476 (  dist_pc           PGUID 11 f t f 2 f 604 "600 718" 100 0 1 0  foo bar ));
+DATA(insert OID = 1477 (  circle_contain_pt   PGUID 11 f t f 2 f  16 "718 600" 100 0 0 100  foo bar ));
+DATA(insert OID = 1478 (  pt_contained_circle PGUID 11 f t f 2 f  16 "600 718" 100 0 0 100  foo bar ));
+DATA(insert OID = 1479 (  box_circle        PGUID 11 f t f 1 f 718 "603" 100 0 1 0  foo bar ));
+DATA(insert OID = 1480 (  circle_box        PGUID 11 f t f 1 f 603 "718" 100 0 1 0  foo bar ));
 
 DATA(insert OID = 1530 (  point             PGUID 14 f t f 2 f 600 "601 601" 100 0 0 100  "select lseg_interpt($1, $2)" - ));
 DATA(insert OID = 1531 (  point             PGUID 14 f t f 1 f 600 "718" 100 0 0 100  "select circle_center($1)" - ));
@@ -996,9 +1034,7 @@ DATA(insert OID = 1543 (  isperpendicular   PGUID 14 f t f 2 f  16 "601 601" 100
 DATA(insert OID = 1544 (  isvertical        PGUID 14 f t f 1 f  16 "601" 100 0 0 100  "select lseg_vertical($1)" - ));
 DATA(insert OID = 1545 (  ishorizontal      PGUID 14 f t f 1 f  16 "601" 100 0 0 100  "select lseg_horizontal($1)" - ));
 
-/* XXX "length" for boxes is different than "length" for paths, so use "width" for boxes instead.
- * should go back into code and change subroutine name from "box_length" to "box_width".
- * pclose and popen might better be named close and open, but that crashes initdb.
+/* pclose and popen might better be named close and open, but that crashes initdb.
  * - tgl 97/04/20
  */
 
@@ -1012,10 +1048,11 @@ DATA(insert OID = 1556 (  isclosed          PGUID 14 f t f 1 f  16 "602" 100 0 0
 
 DATA(insert OID = 1560 (  box               PGUID 14 f t f 2 f 603 "603 603" 100 0 0 100  "select box_intersect($1, $2)" - ));
 DATA(insert OID = 1561 (  box               PGUID 14 f t f 1 f 603 "604" 100 0 0 100  "select poly_box($1)" - ));
-DATA(insert OID = 1562 (  width             PGUID 14 f t f 1 f 701 "603" 100 0 0 100  "select box_length($1)" - ));
+DATA(insert OID = 1562 (  width             PGUID 14 f t f 1 f 701 "603" 100 0 0 100  "select box_width($1)" - ));
 DATA(insert OID = 1563 (  height            PGUID 14 f t f 1 f 701 "603" 100 0 0 100  "select box_height($1)" - ));
 DATA(insert OID = 1564 (  center            PGUID 14 f t f 1 f 600 "603" 100 0 0 100  "select box_center($1)" - ));
 DATA(insert OID = 1565 (  area              PGUID 14 f t f 1 f 701 "603" 100 0 0 100  "select box_area($1)" - ));
+DATA(insert OID = 1569 (  box               PGUID 14 f t f 1 f 603 "718" 100 0 0 100  "select circle_box($1)" - ));
 
 DATA(insert OID = 1570 (  polygon           PGUID 14 f t f 1 f 604 "602" 100 0 0 100  "select path_poly($1)" - ));
 DATA(insert OID = 1571 (  polygon           PGUID 14 f t f 1 f 604 "603" 100 0 0 100  "select box_poly($1)" - ));
@@ -1024,6 +1061,7 @@ DATA(insert OID = 1573 (  polygon           PGUID 14 f t f 1 f 604 "718" 100 0 0
 DATA(insert OID = 1574 (  points            PGUID 14 f t f 1 f  23 "604" 100 0 0 100  "select poly_npoints($1)" - ));
 DATA(insert OID = 1575 (  center            PGUID 14 f t f 1 f 600 "604" 100 0 0 100  "select poly_center($1)" - ));
 
+DATA(insert OID = 1579 (  circle            PGUID 14 f t f 1 f 701 "603" 100 0 0 100  "select box_circle($1)" - ));
 DATA(insert OID = 1580 (  circle            PGUID 14 f t f 1 f 701 "604" 100 0 0 100  "select poly_circle($1)" - ));
 DATA(insert OID = 1581 (  center            PGUID 14 f t f 1 f 600 "718" 100 0 0 100  "select circle_center($1)" - ));
 DATA(insert OID = 1582 (  radius            PGUID 14 f t f 1 f 701 "718" 100 0 0 100  "select circle_radius($1)" - ));
@@ -1031,6 +1069,9 @@ DATA(insert OID = 1583 (  diameter          PGUID 14 f t f 1 f 701 "718" 100 0 0
 DATA(insert OID = 1584 (  area              PGUID 14 f t f 1 f 701 "718" 100 0 0 100  "select circle_area($1)" - ));
 
 /* Oracle Compatibility Related Functions - By Edmund Mergl <E.Mergl@bawue.de> */
+DATA(insert OID =  868 (  strpos       PGUID 14 f t f 2 f 23 "25 25" 100 0 0 100  "select textpos($1, $2)" - ));
+
+DATA(insert OID =  869 (  trim         PGUID 14 f t f 1 f 25 "25" 100 0 0 100  "select btrim($1, \' \')" - ));
 DATA(insert OID =  870 (  lower        PGUID 11 f t f 1 f 25 "25" 100 0 0 100  foo bar ));
 DATA(insert OID =  871 (  upper        PGUID 11 f t f 1 f 25 "25" 100 0 0 100  foo bar ));
 DATA(insert OID =  872 (  initcap      PGUID 11 f t f 1 f 25 "25" 100 0 0 100  foo bar ));
@@ -1045,6 +1086,8 @@ DATA(insert OID =  880 (  rpad         PGUID 14 f t f 2 f 25 "25 23" 100 0 0 100
 DATA(insert OID =  881 (  ltrim        PGUID 14 f t f 1 f 25 "25" 100 0 0 100  "select ltrim($1, \' \')" - ));
 DATA(insert OID =  882 (  rtrim        PGUID 14 f t f 1 f 25 "25" 100 0 0 100  "select rtrim($1, \' \')" - ));
 DATA(insert OID =  883 (  substr       PGUID 14 f t f 2 f 25 "25 23" 100 0 0 100  "select substr($1, $2, 10000)" - ));
+DATA(insert OID =  884 (  btrim        PGUID 11 f t f 2 f 25 "25 25" 100 0 0 100  foo bar ));
+DATA(insert OID =  885 (  btrim        PGUID 14 f t f 1 f 25 "25" 100 0 0 100  "select btrim($1, \' \')" - ));
 
 /* SEQUENCEs nextval & currval functions */
 DATA(insert OID =  1317 (  nextval     PGUID 11 f t f 1 f 23 "25" 100 0 0 100  foo bar ));