1/* 2 * RUM version 1.1 3 */ 4 5CREATE FUNCTION rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal) 6RETURNS bool 7AS 'MODULE_PATHNAME' 8LANGUAGE C STRICT IMMUTABLE; 9 10ALTER FUNCTION 11 rum_tsquery_timestamp_consistent (internal,smallint,tsvector,int,internal,internal,internal,internal) 12 RENAME TO rum_tsquery_addon_consistent; 13 14CREATE FUNCTION rum_numeric_cmp(numeric, numeric) 15RETURNS int4 16AS 'MODULE_PATHNAME' 17LANGUAGE C STRICT IMMUTABLE; 18 19CREATE OPERATOR CLASS rum_tsvector_addon_ops 20FOR TYPE tsvector USING rum 21AS 22 OPERATOR 1 @@ (tsvector, tsquery), 23 --support function 24 FUNCTION 1 gin_cmp_tslexeme(text, text), 25 FUNCTION 2 rum_extract_tsvector(tsvector,internal,internal,internal,internal), 26 FUNCTION 3 rum_extract_tsquery(tsquery,internal,smallint,internal,internal,internal,internal), 27 FUNCTION 4 rum_tsquery_addon_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 28 FUNCTION 5 gin_cmp_prefix(text,text,smallint,internal), 29 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 30 STORAGE text; 31 32CREATE OPERATOR CLASS rum_tsvector_hash_addon_ops 33FOR TYPE tsvector USING rum 34AS 35 OPERATOR 1 @@ (tsvector, tsquery), 36 --support function 37 FUNCTION 1 btint4cmp(integer, integer), 38 FUNCTION 2 rum_extract_tsvector_hash(tsvector,internal,internal,internal,internal), 39 FUNCTION 3 rum_extract_tsquery_hash(tsquery,internal,smallint,internal,internal,internal,internal), 40 FUNCTION 4 rum_tsquery_addon_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 41 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 42 STORAGE integer; 43 44/*--------------------int2-----------------------*/ 45 46CREATE FUNCTION rum_int2_extract_value(int2, internal) 47RETURNS internal 48AS 'MODULE_PATHNAME' 49LANGUAGE C STRICT IMMUTABLE; 50 51CREATE FUNCTION rum_int2_compare_prefix(int2, int2, int2, internal) 52RETURNS int4 53AS 'MODULE_PATHNAME' 54LANGUAGE C STRICT IMMUTABLE; 55 56CREATE FUNCTION rum_int2_extract_query(int2, internal, int2, internal, internal) 57RETURNS internal 58AS 'MODULE_PATHNAME' 59LANGUAGE C STRICT IMMUTABLE; 60 61 62 63CREATE FUNCTION rum_int2_distance(int2, int2) 64RETURNS float8 65AS 'MODULE_PATHNAME' 66LANGUAGE C IMMUTABLE STRICT; 67 68CREATE OPERATOR <=> ( 69 PROCEDURE = rum_int2_distance, 70 LEFTARG = int2, 71 RIGHTARG = int2, 72 COMMUTATOR = <=> 73); 74 75CREATE FUNCTION rum_int2_left_distance(int2, int2) 76RETURNS float8 77AS 'MODULE_PATHNAME' 78LANGUAGE C IMMUTABLE STRICT; 79 80CREATE OPERATOR <=| ( 81 PROCEDURE = rum_int2_left_distance, 82 LEFTARG = int2, 83 RIGHTARG = int2, 84 COMMUTATOR = |=> 85); 86 87CREATE FUNCTION rum_int2_right_distance(int2, int2) 88RETURNS float8 89AS 'MODULE_PATHNAME' 90LANGUAGE C IMMUTABLE STRICT; 91 92CREATE OPERATOR |=> ( 93 PROCEDURE = rum_int2_right_distance, 94 LEFTARG = int2, 95 RIGHTARG = int2, 96 COMMUTATOR = <=| 97); 98 99CREATE FUNCTION rum_int2_outer_distance(int2, int2, smallint) 100RETURNS float8 101AS 'MODULE_PATHNAME' 102LANGUAGE C STRICT IMMUTABLE; 103 104CREATE FUNCTION rum_int2_config(internal) 105RETURNS void 106AS 'MODULE_PATHNAME' 107LANGUAGE C IMMUTABLE STRICT; 108 109 110 111CREATE OPERATOR CLASS rum_int2_ops 112DEFAULT FOR TYPE int2 USING rum 113AS 114 OPERATOR 1 < , 115 OPERATOR 2 <= , 116 OPERATOR 3 = , 117 OPERATOR 4 >= , 118 OPERATOR 5 > , 119 OPERATOR 20 <=> (int2,int2) FOR ORDER BY pg_catalog.float_ops, 120 OPERATOR 21 <=| (int2,int2) FOR ORDER BY pg_catalog.float_ops, 121 OPERATOR 22 |=> (int2,int2) FOR ORDER BY pg_catalog.float_ops, 122 FUNCTION 1 btint2cmp(int2,int2), 123 FUNCTION 2 rum_int2_extract_value(int2, internal), 124 FUNCTION 3 rum_int2_extract_query(int2, internal, int2, internal, internal), 125 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 126 FUNCTION 5 rum_int2_compare_prefix(int2,int2,int2, internal), 127 -- support to int2 distance in rum_tsvector_addon_ops 128 FUNCTION 6 rum_int2_config(internal), 129 FUNCTION 9 rum_int2_outer_distance(int2, int2, smallint), 130STORAGE int2; 131 132/*--------------------int4-----------------------*/ 133 134CREATE FUNCTION rum_int4_extract_value(int4, internal) 135RETURNS internal 136AS 'MODULE_PATHNAME' 137LANGUAGE C STRICT IMMUTABLE; 138 139CREATE FUNCTION rum_int4_compare_prefix(int4, int4, int2, internal) 140RETURNS int4 141AS 'MODULE_PATHNAME' 142LANGUAGE C STRICT IMMUTABLE; 143 144CREATE FUNCTION rum_int4_extract_query(int4, internal, int2, internal, internal) 145RETURNS internal 146AS 'MODULE_PATHNAME' 147LANGUAGE C STRICT IMMUTABLE; 148 149 150 151CREATE FUNCTION rum_int4_distance(int4, int4) 152RETURNS float8 153AS 'MODULE_PATHNAME' 154LANGUAGE C IMMUTABLE STRICT; 155 156CREATE OPERATOR <=> ( 157 PROCEDURE = rum_int4_distance, 158 LEFTARG = int4, 159 RIGHTARG = int4, 160 COMMUTATOR = <=> 161); 162 163CREATE FUNCTION rum_int4_left_distance(int4, int4) 164RETURNS float8 165AS 'MODULE_PATHNAME' 166LANGUAGE C IMMUTABLE STRICT; 167 168CREATE OPERATOR <=| ( 169 PROCEDURE = rum_int4_left_distance, 170 LEFTARG = int4, 171 RIGHTARG = int4, 172 COMMUTATOR = |=> 173); 174 175CREATE FUNCTION rum_int4_right_distance(int4, int4) 176RETURNS float8 177AS 'MODULE_PATHNAME' 178LANGUAGE C IMMUTABLE STRICT; 179 180CREATE OPERATOR |=> ( 181 PROCEDURE = rum_int4_right_distance, 182 LEFTARG = int4, 183 RIGHTARG = int4, 184 COMMUTATOR = <=| 185); 186 187CREATE FUNCTION rum_int4_outer_distance(int4, int4, smallint) 188RETURNS float8 189AS 'MODULE_PATHNAME' 190LANGUAGE C STRICT IMMUTABLE; 191 192CREATE FUNCTION rum_int4_config(internal) 193RETURNS void 194AS 'MODULE_PATHNAME' 195LANGUAGE C IMMUTABLE STRICT; 196 197 198 199CREATE OPERATOR CLASS rum_int4_ops 200DEFAULT FOR TYPE int4 USING rum 201AS 202 OPERATOR 1 < , 203 OPERATOR 2 <= , 204 OPERATOR 3 = , 205 OPERATOR 4 >= , 206 OPERATOR 5 > , 207 OPERATOR 20 <=> (int4,int4) FOR ORDER BY pg_catalog.float_ops, 208 OPERATOR 21 <=| (int4,int4) FOR ORDER BY pg_catalog.float_ops, 209 OPERATOR 22 |=> (int4,int4) FOR ORDER BY pg_catalog.float_ops, 210 FUNCTION 1 btint4cmp(int4,int4), 211 FUNCTION 2 rum_int4_extract_value(int4, internal), 212 FUNCTION 3 rum_int4_extract_query(int4, internal, int2, internal, internal), 213 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 214 FUNCTION 5 rum_int4_compare_prefix(int4,int4,int2, internal), 215 -- support to int4 distance in rum_tsvector_addon_ops 216 FUNCTION 6 rum_int4_config(internal), 217 FUNCTION 9 rum_int4_outer_distance(int4, int4, smallint), 218STORAGE int4; 219 220/*--------------------int8-----------------------*/ 221 222CREATE FUNCTION rum_int8_extract_value(int8, internal) 223RETURNS internal 224AS 'MODULE_PATHNAME' 225LANGUAGE C STRICT IMMUTABLE; 226 227CREATE FUNCTION rum_int8_compare_prefix(int8, int8, int2, internal) 228RETURNS int4 229AS 'MODULE_PATHNAME' 230LANGUAGE C STRICT IMMUTABLE; 231 232CREATE FUNCTION rum_int8_extract_query(int8, internal, int2, internal, internal) 233RETURNS internal 234AS 'MODULE_PATHNAME' 235LANGUAGE C STRICT IMMUTABLE; 236 237 238 239CREATE FUNCTION rum_int8_distance(int8, int8) 240RETURNS float8 241AS 'MODULE_PATHNAME' 242LANGUAGE C IMMUTABLE STRICT; 243 244CREATE OPERATOR <=> ( 245 PROCEDURE = rum_int8_distance, 246 LEFTARG = int8, 247 RIGHTARG = int8, 248 COMMUTATOR = <=> 249); 250 251CREATE FUNCTION rum_int8_left_distance(int8, int8) 252RETURNS float8 253AS 'MODULE_PATHNAME' 254LANGUAGE C IMMUTABLE STRICT; 255 256CREATE OPERATOR <=| ( 257 PROCEDURE = rum_int8_left_distance, 258 LEFTARG = int8, 259 RIGHTARG = int8, 260 COMMUTATOR = |=> 261); 262 263CREATE FUNCTION rum_int8_right_distance(int8, int8) 264RETURNS float8 265AS 'MODULE_PATHNAME' 266LANGUAGE C IMMUTABLE STRICT; 267 268CREATE OPERATOR |=> ( 269 PROCEDURE = rum_int8_right_distance, 270 LEFTARG = int8, 271 RIGHTARG = int8, 272 COMMUTATOR = <=| 273); 274 275CREATE FUNCTION rum_int8_outer_distance(int8, int8, smallint) 276RETURNS float8 277AS 'MODULE_PATHNAME' 278LANGUAGE C STRICT IMMUTABLE; 279 280CREATE FUNCTION rum_int8_config(internal) 281RETURNS void 282AS 'MODULE_PATHNAME' 283LANGUAGE C IMMUTABLE STRICT; 284 285 286 287CREATE OPERATOR CLASS rum_int8_ops 288DEFAULT FOR TYPE int8 USING rum 289AS 290 OPERATOR 1 < , 291 OPERATOR 2 <= , 292 OPERATOR 3 = , 293 OPERATOR 4 >= , 294 OPERATOR 5 > , 295 OPERATOR 20 <=> (int8,int8) FOR ORDER BY pg_catalog.float_ops, 296 OPERATOR 21 <=| (int8,int8) FOR ORDER BY pg_catalog.float_ops, 297 OPERATOR 22 |=> (int8,int8) FOR ORDER BY pg_catalog.float_ops, 298 FUNCTION 1 btint8cmp(int8,int8), 299 FUNCTION 2 rum_int8_extract_value(int8, internal), 300 FUNCTION 3 rum_int8_extract_query(int8, internal, int2, internal, internal), 301 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 302 FUNCTION 5 rum_int8_compare_prefix(int8,int8,int2, internal), 303 -- support to int8 distance in rum_tsvector_addon_ops 304 FUNCTION 6 rum_int8_config(internal), 305 FUNCTION 9 rum_int8_outer_distance(int8, int8, smallint), 306STORAGE int8; 307 308/*--------------------float4-----------------------*/ 309 310CREATE FUNCTION rum_float4_extract_value(float4, internal) 311RETURNS internal 312AS 'MODULE_PATHNAME' 313LANGUAGE C STRICT IMMUTABLE; 314 315CREATE FUNCTION rum_float4_compare_prefix(float4, float4, int2, internal) 316RETURNS int4 317AS 'MODULE_PATHNAME' 318LANGUAGE C STRICT IMMUTABLE; 319 320CREATE FUNCTION rum_float4_extract_query(float4, internal, int2, internal, internal) 321RETURNS internal 322AS 'MODULE_PATHNAME' 323LANGUAGE C STRICT IMMUTABLE; 324 325 326 327CREATE FUNCTION rum_float4_distance(float4, float4) 328RETURNS float8 329AS 'MODULE_PATHNAME' 330LANGUAGE C IMMUTABLE STRICT; 331 332CREATE OPERATOR <=> ( 333 PROCEDURE = rum_float4_distance, 334 LEFTARG = float4, 335 RIGHTARG = float4, 336 COMMUTATOR = <=> 337); 338 339CREATE FUNCTION rum_float4_left_distance(float4, float4) 340RETURNS float8 341AS 'MODULE_PATHNAME' 342LANGUAGE C IMMUTABLE STRICT; 343 344CREATE OPERATOR <=| ( 345 PROCEDURE = rum_float4_left_distance, 346 LEFTARG = float4, 347 RIGHTARG = float4, 348 COMMUTATOR = |=> 349); 350 351CREATE FUNCTION rum_float4_right_distance(float4, float4) 352RETURNS float8 353AS 'MODULE_PATHNAME' 354LANGUAGE C IMMUTABLE STRICT; 355 356CREATE OPERATOR |=> ( 357 PROCEDURE = rum_float4_right_distance, 358 LEFTARG = float4, 359 RIGHTARG = float4, 360 COMMUTATOR = <=| 361); 362 363CREATE FUNCTION rum_float4_outer_distance(float4, float4, smallint) 364RETURNS float8 365AS 'MODULE_PATHNAME' 366LANGUAGE C STRICT IMMUTABLE; 367 368CREATE FUNCTION rum_float4_config(internal) 369RETURNS void 370AS 'MODULE_PATHNAME' 371LANGUAGE C IMMUTABLE STRICT; 372 373 374 375CREATE OPERATOR CLASS rum_float4_ops 376DEFAULT FOR TYPE float4 USING rum 377AS 378 OPERATOR 1 < , 379 OPERATOR 2 <= , 380 OPERATOR 3 = , 381 OPERATOR 4 >= , 382 OPERATOR 5 > , 383 OPERATOR 20 <=> (float4,float4) FOR ORDER BY pg_catalog.float_ops, 384 OPERATOR 21 <=| (float4,float4) FOR ORDER BY pg_catalog.float_ops, 385 OPERATOR 22 |=> (float4,float4) FOR ORDER BY pg_catalog.float_ops, 386 FUNCTION 1 btfloat4cmp(float4,float4), 387 FUNCTION 2 rum_float4_extract_value(float4, internal), 388 FUNCTION 3 rum_float4_extract_query(float4, internal, int2, internal, internal), 389 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 390 FUNCTION 5 rum_float4_compare_prefix(float4,float4,int2, internal), 391 -- support to float4 distance in rum_tsvector_addon_ops 392 FUNCTION 6 rum_float4_config(internal), 393 FUNCTION 9 rum_float4_outer_distance(float4, float4, smallint), 394STORAGE float4; 395 396/*--------------------float8-----------------------*/ 397 398CREATE FUNCTION rum_float8_extract_value(float8, internal) 399RETURNS internal 400AS 'MODULE_PATHNAME' 401LANGUAGE C STRICT IMMUTABLE; 402 403CREATE FUNCTION rum_float8_compare_prefix(float8, float8, int2, internal) 404RETURNS int4 405AS 'MODULE_PATHNAME' 406LANGUAGE C STRICT IMMUTABLE; 407 408CREATE FUNCTION rum_float8_extract_query(float8, internal, int2, internal, internal) 409RETURNS internal 410AS 'MODULE_PATHNAME' 411LANGUAGE C STRICT IMMUTABLE; 412 413 414 415CREATE FUNCTION rum_float8_distance(float8, float8) 416RETURNS float8 417AS 'MODULE_PATHNAME' 418LANGUAGE C IMMUTABLE STRICT; 419 420CREATE OPERATOR <=> ( 421 PROCEDURE = rum_float8_distance, 422 LEFTARG = float8, 423 RIGHTARG = float8, 424 COMMUTATOR = <=> 425); 426 427CREATE FUNCTION rum_float8_left_distance(float8, float8) 428RETURNS float8 429AS 'MODULE_PATHNAME' 430LANGUAGE C IMMUTABLE STRICT; 431 432CREATE OPERATOR <=| ( 433 PROCEDURE = rum_float8_left_distance, 434 LEFTARG = float8, 435 RIGHTARG = float8, 436 COMMUTATOR = |=> 437); 438 439CREATE FUNCTION rum_float8_right_distance(float8, float8) 440RETURNS float8 441AS 'MODULE_PATHNAME' 442LANGUAGE C IMMUTABLE STRICT; 443 444CREATE OPERATOR |=> ( 445 PROCEDURE = rum_float8_right_distance, 446 LEFTARG = float8, 447 RIGHTARG = float8, 448 COMMUTATOR = <=| 449); 450 451CREATE FUNCTION rum_float8_outer_distance(float8, float8, smallint) 452RETURNS float8 453AS 'MODULE_PATHNAME' 454LANGUAGE C STRICT IMMUTABLE; 455 456CREATE FUNCTION rum_float8_config(internal) 457RETURNS void 458AS 'MODULE_PATHNAME' 459LANGUAGE C IMMUTABLE STRICT; 460 461 462 463CREATE OPERATOR CLASS rum_float8_ops 464DEFAULT FOR TYPE float8 USING rum 465AS 466 OPERATOR 1 < , 467 OPERATOR 2 <= , 468 OPERATOR 3 = , 469 OPERATOR 4 >= , 470 OPERATOR 5 > , 471 OPERATOR 20 <=> (float8,float8) FOR ORDER BY pg_catalog.float_ops, 472 OPERATOR 21 <=| (float8,float8) FOR ORDER BY pg_catalog.float_ops, 473 OPERATOR 22 |=> (float8,float8) FOR ORDER BY pg_catalog.float_ops, 474 FUNCTION 1 btfloat8cmp(float8,float8), 475 FUNCTION 2 rum_float8_extract_value(float8, internal), 476 FUNCTION 3 rum_float8_extract_query(float8, internal, int2, internal, internal), 477 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 478 FUNCTION 5 rum_float8_compare_prefix(float8,float8,int2, internal), 479 -- support to float8 distance in rum_tsvector_addon_ops 480 FUNCTION 6 rum_float8_config(internal), 481 FUNCTION 9 rum_float8_outer_distance(float8, float8, smallint), 482STORAGE float8; 483 484/*--------------------money-----------------------*/ 485 486CREATE FUNCTION rum_money_extract_value(money, internal) 487RETURNS internal 488AS 'MODULE_PATHNAME' 489LANGUAGE C STRICT IMMUTABLE; 490 491CREATE FUNCTION rum_money_compare_prefix(money, money, int2, internal) 492RETURNS int4 493AS 'MODULE_PATHNAME' 494LANGUAGE C STRICT IMMUTABLE; 495 496CREATE FUNCTION rum_money_extract_query(money, internal, int2, internal, internal) 497RETURNS internal 498AS 'MODULE_PATHNAME' 499LANGUAGE C STRICT IMMUTABLE; 500 501 502 503CREATE FUNCTION rum_money_distance(money, money) 504RETURNS float8 505AS 'MODULE_PATHNAME' 506LANGUAGE C IMMUTABLE STRICT; 507 508CREATE OPERATOR <=> ( 509 PROCEDURE = rum_money_distance, 510 LEFTARG = money, 511 RIGHTARG = money, 512 COMMUTATOR = <=> 513); 514 515CREATE FUNCTION rum_money_left_distance(money, money) 516RETURNS float8 517AS 'MODULE_PATHNAME' 518LANGUAGE C IMMUTABLE STRICT; 519 520CREATE OPERATOR <=| ( 521 PROCEDURE = rum_money_left_distance, 522 LEFTARG = money, 523 RIGHTARG = money, 524 COMMUTATOR = |=> 525); 526 527CREATE FUNCTION rum_money_right_distance(money, money) 528RETURNS float8 529AS 'MODULE_PATHNAME' 530LANGUAGE C IMMUTABLE STRICT; 531 532CREATE OPERATOR |=> ( 533 PROCEDURE = rum_money_right_distance, 534 LEFTARG = money, 535 RIGHTARG = money, 536 COMMUTATOR = <=| 537); 538 539CREATE FUNCTION rum_money_outer_distance(money, money, smallint) 540RETURNS float8 541AS 'MODULE_PATHNAME' 542LANGUAGE C STRICT IMMUTABLE; 543 544CREATE FUNCTION rum_money_config(internal) 545RETURNS void 546AS 'MODULE_PATHNAME' 547LANGUAGE C IMMUTABLE STRICT; 548 549 550 551CREATE OPERATOR CLASS rum_money_ops 552DEFAULT FOR TYPE money USING rum 553AS 554 OPERATOR 1 < , 555 OPERATOR 2 <= , 556 OPERATOR 3 = , 557 OPERATOR 4 >= , 558 OPERATOR 5 > , 559 OPERATOR 20 <=> (money,money) FOR ORDER BY pg_catalog.float_ops, 560 OPERATOR 21 <=| (money,money) FOR ORDER BY pg_catalog.float_ops, 561 OPERATOR 22 |=> (money,money) FOR ORDER BY pg_catalog.float_ops, 562 FUNCTION 1 cash_cmp(money,money), 563 FUNCTION 2 rum_money_extract_value(money, internal), 564 FUNCTION 3 rum_money_extract_query(money, internal, int2, internal, internal), 565 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 566 FUNCTION 5 rum_money_compare_prefix(money,money,int2, internal), 567 -- support to money distance in rum_tsvector_addon_ops 568 FUNCTION 6 rum_money_config(internal), 569 FUNCTION 9 rum_money_outer_distance(money, money, smallint), 570STORAGE money; 571 572/*--------------------oid-----------------------*/ 573 574CREATE FUNCTION rum_oid_extract_value(oid, internal) 575RETURNS internal 576AS 'MODULE_PATHNAME' 577LANGUAGE C STRICT IMMUTABLE; 578 579CREATE FUNCTION rum_oid_compare_prefix(oid, oid, int2, internal) 580RETURNS int4 581AS 'MODULE_PATHNAME' 582LANGUAGE C STRICT IMMUTABLE; 583 584CREATE FUNCTION rum_oid_extract_query(oid, internal, int2, internal, internal) 585RETURNS internal 586AS 'MODULE_PATHNAME' 587LANGUAGE C STRICT IMMUTABLE; 588 589 590 591CREATE FUNCTION rum_oid_distance(oid, oid) 592RETURNS float8 593AS 'MODULE_PATHNAME' 594LANGUAGE C IMMUTABLE STRICT; 595 596CREATE OPERATOR <=> ( 597 PROCEDURE = rum_oid_distance, 598 LEFTARG = oid, 599 RIGHTARG = oid, 600 COMMUTATOR = <=> 601); 602 603CREATE FUNCTION rum_oid_left_distance(oid, oid) 604RETURNS float8 605AS 'MODULE_PATHNAME' 606LANGUAGE C IMMUTABLE STRICT; 607 608CREATE OPERATOR <=| ( 609 PROCEDURE = rum_oid_left_distance, 610 LEFTARG = oid, 611 RIGHTARG = oid, 612 COMMUTATOR = |=> 613); 614 615CREATE FUNCTION rum_oid_right_distance(oid, oid) 616RETURNS float8 617AS 'MODULE_PATHNAME' 618LANGUAGE C IMMUTABLE STRICT; 619 620CREATE OPERATOR |=> ( 621 PROCEDURE = rum_oid_right_distance, 622 LEFTARG = oid, 623 RIGHTARG = oid, 624 COMMUTATOR = <=| 625); 626 627CREATE FUNCTION rum_oid_outer_distance(oid, oid, smallint) 628RETURNS float8 629AS 'MODULE_PATHNAME' 630LANGUAGE C STRICT IMMUTABLE; 631 632CREATE FUNCTION rum_oid_config(internal) 633RETURNS void 634AS 'MODULE_PATHNAME' 635LANGUAGE C IMMUTABLE STRICT; 636 637 638 639CREATE OPERATOR CLASS rum_oid_ops 640DEFAULT FOR TYPE oid USING rum 641AS 642 OPERATOR 1 < , 643 OPERATOR 2 <= , 644 OPERATOR 3 = , 645 OPERATOR 4 >= , 646 OPERATOR 5 > , 647 OPERATOR 20 <=> (oid,oid) FOR ORDER BY pg_catalog.float_ops, 648 OPERATOR 21 <=| (oid,oid) FOR ORDER BY pg_catalog.float_ops, 649 OPERATOR 22 |=> (oid,oid) FOR ORDER BY pg_catalog.float_ops, 650 FUNCTION 1 btoidcmp(oid,oid), 651 FUNCTION 2 rum_oid_extract_value(oid, internal), 652 FUNCTION 3 rum_oid_extract_query(oid, internal, int2, internal, internal), 653 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 654 FUNCTION 5 rum_oid_compare_prefix(oid,oid,int2, internal), 655 -- support to oid distance in rum_tsvector_addon_ops 656 FUNCTION 6 rum_oid_config(internal), 657 FUNCTION 9 rum_oid_outer_distance(oid, oid, smallint), 658STORAGE oid; 659 660/*--------------------time-----------------------*/ 661 662CREATE FUNCTION rum_time_extract_value(time, internal) 663RETURNS internal 664AS 'MODULE_PATHNAME' 665LANGUAGE C STRICT IMMUTABLE; 666 667CREATE FUNCTION rum_time_compare_prefix(time, time, int2, internal) 668RETURNS int4 669AS 'MODULE_PATHNAME' 670LANGUAGE C STRICT IMMUTABLE; 671 672CREATE FUNCTION rum_time_extract_query(time, internal, int2, internal, internal) 673RETURNS internal 674AS 'MODULE_PATHNAME' 675LANGUAGE C STRICT IMMUTABLE; 676 677 678CREATE OPERATOR CLASS rum_time_ops 679DEFAULT FOR TYPE time USING rum 680AS 681 OPERATOR 1 < , 682 OPERATOR 2 <= , 683 OPERATOR 3 = , 684 OPERATOR 4 >= , 685 OPERATOR 5 > , 686 FUNCTION 1 time_cmp(time,time), 687 FUNCTION 2 rum_time_extract_value(time, internal), 688 FUNCTION 3 rum_time_extract_query(time, internal, int2, internal, internal), 689 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 690 FUNCTION 5 rum_time_compare_prefix(time,time,int2, internal), 691STORAGE time; 692 693/*--------------------timetz-----------------------*/ 694 695CREATE FUNCTION rum_timetz_extract_value(timetz, internal) 696RETURNS internal 697AS 'MODULE_PATHNAME' 698LANGUAGE C STRICT IMMUTABLE; 699 700CREATE FUNCTION rum_timetz_compare_prefix(timetz, timetz, int2, internal) 701RETURNS int4 702AS 'MODULE_PATHNAME' 703LANGUAGE C STRICT IMMUTABLE; 704 705CREATE FUNCTION rum_timetz_extract_query(timetz, internal, int2, internal, internal) 706RETURNS internal 707AS 'MODULE_PATHNAME' 708LANGUAGE C STRICT IMMUTABLE; 709 710 711CREATE OPERATOR CLASS rum_timetz_ops 712DEFAULT FOR TYPE timetz USING rum 713AS 714 OPERATOR 1 < , 715 OPERATOR 2 <= , 716 OPERATOR 3 = , 717 OPERATOR 4 >= , 718 OPERATOR 5 > , 719 FUNCTION 1 timetz_cmp(timetz,timetz), 720 FUNCTION 2 rum_timetz_extract_value(timetz, internal), 721 FUNCTION 3 rum_timetz_extract_query(timetz, internal, int2, internal, internal), 722 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 723 FUNCTION 5 rum_timetz_compare_prefix(timetz,timetz,int2, internal), 724STORAGE timetz; 725 726/*--------------------date-----------------------*/ 727 728CREATE FUNCTION rum_date_extract_value(date, internal) 729RETURNS internal 730AS 'MODULE_PATHNAME' 731LANGUAGE C STRICT IMMUTABLE; 732 733CREATE FUNCTION rum_date_compare_prefix(date, date, int2, internal) 734RETURNS int4 735AS 'MODULE_PATHNAME' 736LANGUAGE C STRICT IMMUTABLE; 737 738CREATE FUNCTION rum_date_extract_query(date, internal, int2, internal, internal) 739RETURNS internal 740AS 'MODULE_PATHNAME' 741LANGUAGE C STRICT IMMUTABLE; 742 743 744CREATE OPERATOR CLASS rum_date_ops 745DEFAULT FOR TYPE date USING rum 746AS 747 OPERATOR 1 < , 748 OPERATOR 2 <= , 749 OPERATOR 3 = , 750 OPERATOR 4 >= , 751 OPERATOR 5 > , 752 FUNCTION 1 date_cmp(date,date), 753 FUNCTION 2 rum_date_extract_value(date, internal), 754 FUNCTION 3 rum_date_extract_query(date, internal, int2, internal, internal), 755 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 756 FUNCTION 5 rum_date_compare_prefix(date,date,int2, internal), 757STORAGE date; 758 759/*--------------------interval-----------------------*/ 760 761CREATE FUNCTION rum_interval_extract_value(interval, internal) 762RETURNS internal 763AS 'MODULE_PATHNAME' 764LANGUAGE C STRICT IMMUTABLE; 765 766CREATE FUNCTION rum_interval_compare_prefix(interval, interval, int2, internal) 767RETURNS int4 768AS 'MODULE_PATHNAME' 769LANGUAGE C STRICT IMMUTABLE; 770 771CREATE FUNCTION rum_interval_extract_query(interval, internal, int2, internal, internal) 772RETURNS internal 773AS 'MODULE_PATHNAME' 774LANGUAGE C STRICT IMMUTABLE; 775 776 777CREATE OPERATOR CLASS rum_interval_ops 778DEFAULT FOR TYPE interval USING rum 779AS 780 OPERATOR 1 < , 781 OPERATOR 2 <= , 782 OPERATOR 3 = , 783 OPERATOR 4 >= , 784 OPERATOR 5 > , 785 FUNCTION 1 interval_cmp(interval,interval), 786 FUNCTION 2 rum_interval_extract_value(interval, internal), 787 FUNCTION 3 rum_interval_extract_query(interval, internal, int2, internal, internal), 788 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 789 FUNCTION 5 rum_interval_compare_prefix(interval,interval,int2, internal), 790STORAGE interval; 791 792/*--------------------macaddr-----------------------*/ 793 794CREATE FUNCTION rum_macaddr_extract_value(macaddr, internal) 795RETURNS internal 796AS 'MODULE_PATHNAME' 797LANGUAGE C STRICT IMMUTABLE; 798 799CREATE FUNCTION rum_macaddr_compare_prefix(macaddr, macaddr, int2, internal) 800RETURNS int4 801AS 'MODULE_PATHNAME' 802LANGUAGE C STRICT IMMUTABLE; 803 804CREATE FUNCTION rum_macaddr_extract_query(macaddr, internal, int2, internal, internal) 805RETURNS internal 806AS 'MODULE_PATHNAME' 807LANGUAGE C STRICT IMMUTABLE; 808 809 810CREATE OPERATOR CLASS rum_macaddr_ops 811DEFAULT FOR TYPE macaddr USING rum 812AS 813 OPERATOR 1 < , 814 OPERATOR 2 <= , 815 OPERATOR 3 = , 816 OPERATOR 4 >= , 817 OPERATOR 5 > , 818 FUNCTION 1 macaddr_cmp(macaddr,macaddr), 819 FUNCTION 2 rum_macaddr_extract_value(macaddr, internal), 820 FUNCTION 3 rum_macaddr_extract_query(macaddr, internal, int2, internal, internal), 821 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 822 FUNCTION 5 rum_macaddr_compare_prefix(macaddr,macaddr,int2, internal), 823STORAGE macaddr; 824 825/*--------------------inet-----------------------*/ 826 827CREATE FUNCTION rum_inet_extract_value(inet, internal) 828RETURNS internal 829AS 'MODULE_PATHNAME' 830LANGUAGE C STRICT IMMUTABLE; 831 832CREATE FUNCTION rum_inet_compare_prefix(inet, inet, int2, internal) 833RETURNS int4 834AS 'MODULE_PATHNAME' 835LANGUAGE C STRICT IMMUTABLE; 836 837CREATE FUNCTION rum_inet_extract_query(inet, internal, int2, internal, internal) 838RETURNS internal 839AS 'MODULE_PATHNAME' 840LANGUAGE C STRICT IMMUTABLE; 841 842 843CREATE OPERATOR CLASS rum_inet_ops 844DEFAULT FOR TYPE inet USING rum 845AS 846 OPERATOR 1 < , 847 OPERATOR 2 <= , 848 OPERATOR 3 = , 849 OPERATOR 4 >= , 850 OPERATOR 5 > , 851 FUNCTION 1 network_cmp(inet,inet), 852 FUNCTION 2 rum_inet_extract_value(inet, internal), 853 FUNCTION 3 rum_inet_extract_query(inet, internal, int2, internal, internal), 854 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 855 FUNCTION 5 rum_inet_compare_prefix(inet,inet,int2, internal), 856STORAGE inet; 857 858/*--------------------cidr-----------------------*/ 859 860CREATE FUNCTION rum_cidr_extract_value(cidr, internal) 861RETURNS internal 862AS 'MODULE_PATHNAME' 863LANGUAGE C STRICT IMMUTABLE; 864 865CREATE FUNCTION rum_cidr_compare_prefix(cidr, cidr, int2, internal) 866RETURNS int4 867AS 'MODULE_PATHNAME' 868LANGUAGE C STRICT IMMUTABLE; 869 870CREATE FUNCTION rum_cidr_extract_query(cidr, internal, int2, internal, internal) 871RETURNS internal 872AS 'MODULE_PATHNAME' 873LANGUAGE C STRICT IMMUTABLE; 874 875 876CREATE OPERATOR CLASS rum_cidr_ops 877DEFAULT FOR TYPE cidr USING rum 878AS 879 OPERATOR 1 < (inet, inet), 880 OPERATOR 2 <= (inet, inet), 881 OPERATOR 3 = (inet, inet), 882 OPERATOR 4 >= (inet, inet), 883 OPERATOR 5 > (inet, inet), 884 FUNCTION 1 network_cmp(inet,inet), 885 FUNCTION 2 rum_cidr_extract_value(cidr, internal), 886 FUNCTION 3 rum_cidr_extract_query(cidr, internal, int2, internal, internal), 887 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 888 FUNCTION 5 rum_cidr_compare_prefix(cidr,cidr,int2, internal), 889STORAGE cidr; 890 891/*--------------------text-----------------------*/ 892 893CREATE FUNCTION rum_text_extract_value(text, internal) 894RETURNS internal 895AS 'MODULE_PATHNAME' 896LANGUAGE C STRICT IMMUTABLE; 897 898CREATE FUNCTION rum_text_compare_prefix(text, text, int2, internal) 899RETURNS int4 900AS 'MODULE_PATHNAME' 901LANGUAGE C STRICT IMMUTABLE; 902 903CREATE FUNCTION rum_text_extract_query(text, internal, int2, internal, internal) 904RETURNS internal 905AS 'MODULE_PATHNAME' 906LANGUAGE C STRICT IMMUTABLE; 907 908 909CREATE OPERATOR CLASS rum_text_ops 910DEFAULT FOR TYPE text USING rum 911AS 912 OPERATOR 1 < , 913 OPERATOR 2 <= , 914 OPERATOR 3 = , 915 OPERATOR 4 >= , 916 OPERATOR 5 > , 917 FUNCTION 1 bttextcmp(text,text), 918 FUNCTION 2 rum_text_extract_value(text, internal), 919 FUNCTION 3 rum_text_extract_query(text, internal, int2, internal, internal), 920 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 921 FUNCTION 5 rum_text_compare_prefix(text,text,int2, internal), 922STORAGE text; 923 924/*--------------------varchar-----------------------*/ 925 926 927CREATE OPERATOR CLASS rum_varchar_ops 928DEFAULT FOR TYPE varchar USING rum 929AS 930 OPERATOR 1 < (text, text), 931 OPERATOR 2 <= (text, text), 932 OPERATOR 3 = (text, text), 933 OPERATOR 4 >= (text, text), 934 OPERATOR 5 > (text, text), 935 FUNCTION 1 bttextcmp(text,text), 936 FUNCTION 2 rum_text_extract_value(text, internal), 937 FUNCTION 3 rum_text_extract_query(text, internal, int2, internal, internal), 938 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 939 FUNCTION 5 rum_text_compare_prefix(text,text,int2, internal), 940STORAGE varchar; 941 942/*--------------------"char"-----------------------*/ 943 944CREATE FUNCTION rum_char_extract_value("char", internal) 945RETURNS internal 946AS 'MODULE_PATHNAME' 947LANGUAGE C STRICT IMMUTABLE; 948 949CREATE FUNCTION rum_char_compare_prefix("char", "char", int2, internal) 950RETURNS int4 951AS 'MODULE_PATHNAME' 952LANGUAGE C STRICT IMMUTABLE; 953 954CREATE FUNCTION rum_char_extract_query("char", internal, int2, internal, internal) 955RETURNS internal 956AS 'MODULE_PATHNAME' 957LANGUAGE C STRICT IMMUTABLE; 958 959 960CREATE OPERATOR CLASS rum_char_ops 961DEFAULT FOR TYPE "char" USING rum 962AS 963 OPERATOR 1 < , 964 OPERATOR 2 <= , 965 OPERATOR 3 = , 966 OPERATOR 4 >= , 967 OPERATOR 5 > , 968 FUNCTION 1 btcharcmp("char","char"), 969 FUNCTION 2 rum_char_extract_value("char", internal), 970 FUNCTION 3 rum_char_extract_query("char", internal, int2, internal, internal), 971 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 972 FUNCTION 5 rum_char_compare_prefix("char","char",int2, internal), 973STORAGE "char"; 974 975/*--------------------bytea-----------------------*/ 976 977CREATE FUNCTION rum_bytea_extract_value(bytea, internal) 978RETURNS internal 979AS 'MODULE_PATHNAME' 980LANGUAGE C STRICT IMMUTABLE; 981 982CREATE FUNCTION rum_bytea_compare_prefix(bytea, bytea, int2, internal) 983RETURNS int4 984AS 'MODULE_PATHNAME' 985LANGUAGE C STRICT IMMUTABLE; 986 987CREATE FUNCTION rum_bytea_extract_query(bytea, internal, int2, internal, internal) 988RETURNS internal 989AS 'MODULE_PATHNAME' 990LANGUAGE C STRICT IMMUTABLE; 991 992 993CREATE OPERATOR CLASS rum_bytea_ops 994DEFAULT FOR TYPE bytea USING rum 995AS 996 OPERATOR 1 < , 997 OPERATOR 2 <= , 998 OPERATOR 3 = , 999 OPERATOR 4 >= , 1000 OPERATOR 5 > , 1001 FUNCTION 1 byteacmp(bytea,bytea), 1002 FUNCTION 2 rum_bytea_extract_value(bytea, internal), 1003 FUNCTION 3 rum_bytea_extract_query(bytea, internal, int2, internal, internal), 1004 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1005 FUNCTION 5 rum_bytea_compare_prefix(bytea,bytea,int2, internal), 1006STORAGE bytea; 1007 1008/*--------------------bit-----------------------*/ 1009 1010CREATE FUNCTION rum_bit_extract_value(bit, internal) 1011RETURNS internal 1012AS 'MODULE_PATHNAME' 1013LANGUAGE C STRICT IMMUTABLE; 1014 1015CREATE FUNCTION rum_bit_compare_prefix(bit, bit, int2, internal) 1016RETURNS int4 1017AS 'MODULE_PATHNAME' 1018LANGUAGE C STRICT IMMUTABLE; 1019 1020CREATE FUNCTION rum_bit_extract_query(bit, internal, int2, internal, internal) 1021RETURNS internal 1022AS 'MODULE_PATHNAME' 1023LANGUAGE C STRICT IMMUTABLE; 1024 1025 1026CREATE OPERATOR CLASS rum_bit_ops 1027DEFAULT FOR TYPE bit USING rum 1028AS 1029 OPERATOR 1 < , 1030 OPERATOR 2 <= , 1031 OPERATOR 3 = , 1032 OPERATOR 4 >= , 1033 OPERATOR 5 > , 1034 FUNCTION 1 bitcmp(bit,bit), 1035 FUNCTION 2 rum_bit_extract_value(bit, internal), 1036 FUNCTION 3 rum_bit_extract_query(bit, internal, int2, internal, internal), 1037 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1038 FUNCTION 5 rum_bit_compare_prefix(bit,bit,int2, internal), 1039STORAGE bit; 1040 1041/*--------------------varbit-----------------------*/ 1042 1043CREATE FUNCTION rum_varbit_extract_value(varbit, internal) 1044RETURNS internal 1045AS 'MODULE_PATHNAME' 1046LANGUAGE C STRICT IMMUTABLE; 1047 1048CREATE FUNCTION rum_varbit_compare_prefix(varbit, varbit, int2, internal) 1049RETURNS int4 1050AS 'MODULE_PATHNAME' 1051LANGUAGE C STRICT IMMUTABLE; 1052 1053CREATE FUNCTION rum_varbit_extract_query(varbit, internal, int2, internal, internal) 1054RETURNS internal 1055AS 'MODULE_PATHNAME' 1056LANGUAGE C STRICT IMMUTABLE; 1057 1058 1059CREATE OPERATOR CLASS rum_varbit_ops 1060DEFAULT FOR TYPE varbit USING rum 1061AS 1062 OPERATOR 1 < , 1063 OPERATOR 2 <= , 1064 OPERATOR 3 = , 1065 OPERATOR 4 >= , 1066 OPERATOR 5 > , 1067 FUNCTION 1 varbitcmp(varbit,varbit), 1068 FUNCTION 2 rum_varbit_extract_value(varbit, internal), 1069 FUNCTION 3 rum_varbit_extract_query(varbit, internal, int2, internal, internal), 1070 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1071 FUNCTION 5 rum_varbit_compare_prefix(varbit,varbit,int2, internal), 1072STORAGE varbit; 1073 1074/*--------------------numeric-----------------------*/ 1075 1076CREATE FUNCTION rum_numeric_extract_value(numeric, internal) 1077RETURNS internal 1078AS 'MODULE_PATHNAME' 1079LANGUAGE C STRICT IMMUTABLE; 1080 1081CREATE FUNCTION rum_numeric_compare_prefix(numeric, numeric, int2, internal) 1082RETURNS int4 1083AS 'MODULE_PATHNAME' 1084LANGUAGE C STRICT IMMUTABLE; 1085 1086CREATE FUNCTION rum_numeric_extract_query(numeric, internal, int2, internal, internal) 1087RETURNS internal 1088AS 'MODULE_PATHNAME' 1089LANGUAGE C STRICT IMMUTABLE; 1090 1091 1092CREATE OPERATOR CLASS rum_numeric_ops 1093DEFAULT FOR TYPE numeric USING rum 1094AS 1095 OPERATOR 1 < , 1096 OPERATOR 2 <= , 1097 OPERATOR 3 = , 1098 OPERATOR 4 >= , 1099 OPERATOR 5 > , 1100 FUNCTION 1 rum_numeric_cmp(numeric,numeric), 1101 FUNCTION 2 rum_numeric_extract_value(numeric, internal), 1102 FUNCTION 3 rum_numeric_extract_query(numeric, internal, int2, internal, internal), 1103 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1104 FUNCTION 5 rum_numeric_compare_prefix(numeric,numeric,int2, internal), 1105STORAGE numeric; 1106 1107