1CREATE OR REPLACE FUNCTION rumhandler(internal) 2RETURNS index_am_handler 3AS 'MODULE_PATHNAME' 4LANGUAGE C; 5 6/* 7 * RUM access method 8 */ 9 10CREATE ACCESS METHOD rum TYPE INDEX HANDLER rumhandler; 11 12/* 13 * RUM built-in types, operators and functions 14 */ 15 16-- Type used in distance calculations with normalization argument 17CREATE TYPE rum_distance_query AS (query tsquery, method int); 18 19CREATE FUNCTION tsquery_to_distance_query(tsquery) 20RETURNS rum_distance_query 21AS 'MODULE_PATHNAME', 'tsquery_to_distance_query' 22LANGUAGE C IMMUTABLE STRICT; 23 24CREATE CAST (tsquery AS rum_distance_query) 25 WITH FUNCTION tsquery_to_distance_query(tsquery) AS IMPLICIT; 26 27CREATE FUNCTION rum_ts_distance(tsvector,tsquery) 28RETURNS float4 29AS 'MODULE_PATHNAME', 'rum_ts_distance_tt' 30LANGUAGE C IMMUTABLE STRICT; 31 32CREATE FUNCTION rum_ts_distance(tsvector,tsquery,int) 33RETURNS float4 34AS 'MODULE_PATHNAME', 'rum_ts_distance_ttf' 35LANGUAGE C IMMUTABLE STRICT; 36 37CREATE FUNCTION rum_ts_distance(tsvector,rum_distance_query) 38RETURNS float4 39AS 'MODULE_PATHNAME', 'rum_ts_distance_td' 40LANGUAGE C IMMUTABLE STRICT; 41 42CREATE OPERATOR <=> ( 43 LEFTARG = tsvector, 44 RIGHTARG = tsquery, 45 PROCEDURE = rum_ts_distance 46); 47 48CREATE OPERATOR <=> ( 49 LEFTARG = tsvector, 50 RIGHTARG = rum_distance_query, 51 PROCEDURE = rum_ts_distance 52); 53 54CREATE FUNCTION rum_timestamp_distance(timestamp, timestamp) 55RETURNS float8 56AS 'MODULE_PATHNAME' 57LANGUAGE C IMMUTABLE STRICT; 58 59CREATE OPERATOR <=> ( 60 PROCEDURE = rum_timestamp_distance, 61 LEFTARG = timestamp, 62 RIGHTARG = timestamp, 63 COMMUTATOR = <=> 64); 65 66CREATE FUNCTION rum_timestamp_left_distance(timestamp, timestamp) 67RETURNS float8 68AS 'MODULE_PATHNAME' 69LANGUAGE C IMMUTABLE STRICT; 70 71CREATE OPERATOR <=| ( 72 PROCEDURE = rum_timestamp_left_distance, 73 LEFTARG = timestamp, 74 RIGHTARG = timestamp, 75 COMMUTATOR = |=> 76); 77 78CREATE FUNCTION rum_timestamp_right_distance(timestamp, timestamp) 79RETURNS float8 80AS 'MODULE_PATHNAME' 81LANGUAGE C IMMUTABLE STRICT; 82 83CREATE OPERATOR |=> ( 84 PROCEDURE = rum_timestamp_right_distance, 85 LEFTARG = timestamp, 86 RIGHTARG = timestamp, 87 COMMUTATOR = <=| 88); 89 90/* 91 * rum_tsvector_ops operator class 92 */ 93 94CREATE FUNCTION rum_extract_tsvector(tsvector,internal,internal,internal,internal) 95RETURNS internal 96AS 'MODULE_PATHNAME' 97LANGUAGE C IMMUTABLE STRICT; 98 99CREATE FUNCTION rum_extract_tsquery(tsquery,internal,smallint,internal,internal,internal,internal) 100RETURNS internal 101AS 'MODULE_PATHNAME' 102LANGUAGE C IMMUTABLE STRICT; 103 104CREATE FUNCTION rum_tsvector_config(internal) 105RETURNS void 106AS 'MODULE_PATHNAME' 107LANGUAGE C IMMUTABLE STRICT; 108 109CREATE FUNCTION rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal) 110RETURNS bool 111AS 'MODULE_PATHNAME' 112LANGUAGE C IMMUTABLE STRICT; 113 114CREATE FUNCTION rum_tsquery_consistent(internal, smallint, tsvector, integer, internal, internal, internal, internal) 115RETURNS bool 116AS 'MODULE_PATHNAME' 117LANGUAGE C IMMUTABLE STRICT; 118 119CREATE FUNCTION rum_tsquery_distance(internal,smallint,tsvector,int,internal,internal,internal,internal,internal) 120RETURNS float8 121AS 'MODULE_PATHNAME' 122LANGUAGE C IMMUTABLE STRICT; 123 124-- To prevent calling from SQL 125CREATE FUNCTION rum_ts_join_pos(internal, internal) 126RETURNS bytea 127AS 'MODULE_PATHNAME' 128LANGUAGE C IMMUTABLE STRICT; 129 130CREATE OPERATOR CLASS rum_tsvector_ops 131DEFAULT FOR TYPE tsvector USING rum 132AS 133 OPERATOR 1 @@ (tsvector, tsquery), 134 OPERATOR 2 <=> (tsvector, tsquery) FOR ORDER BY pg_catalog.float_ops, 135 FUNCTION 1 gin_cmp_tslexeme(text, text), 136 FUNCTION 2 rum_extract_tsvector(tsvector,internal,internal,internal,internal), 137 FUNCTION 3 rum_extract_tsquery(tsquery,internal,smallint,internal,internal,internal,internal), 138 FUNCTION 4 rum_tsquery_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 139 FUNCTION 5 gin_cmp_prefix(text,text,smallint,internal), 140 FUNCTION 6 rum_tsvector_config(internal), 141 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 142 FUNCTION 8 rum_tsquery_distance(internal,smallint,tsvector,int,internal,internal,internal,internal,internal), 143 FUNCTION 10 rum_ts_join_pos(internal, internal), 144 STORAGE text; 145 146/* 147 * rum_tsvector_hash_ops operator class. 148 * 149 * Stores hash of entries as keys in index. 150 */ 151 152CREATE FUNCTION rum_extract_tsvector_hash(tsvector,internal,internal,internal,internal) 153RETURNS internal 154AS 'MODULE_PATHNAME' 155LANGUAGE C IMMUTABLE STRICT; 156 157CREATE FUNCTION rum_extract_tsquery_hash(tsquery,internal,smallint,internal,internal,internal,internal) 158RETURNS internal 159AS 'MODULE_PATHNAME' 160LANGUAGE C IMMUTABLE STRICT; 161 162CREATE OPERATOR CLASS rum_tsvector_hash_ops 163FOR TYPE tsvector USING rum 164AS 165 OPERATOR 1 @@ (tsvector, tsquery), 166 OPERATOR 2 <=> (tsvector, tsquery) FOR ORDER BY pg_catalog.float_ops, 167 FUNCTION 1 btint4cmp(integer, integer), 168 FUNCTION 2 rum_extract_tsvector_hash(tsvector,internal,internal,internal,internal), 169 FUNCTION 3 rum_extract_tsquery_hash(tsquery,internal,smallint,internal,internal,internal,internal), 170 FUNCTION 4 rum_tsquery_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 171 FUNCTION 6 rum_tsvector_config(internal), 172 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 173 FUNCTION 8 rum_tsquery_distance(internal,smallint,tsvector,int,internal,internal,internal,internal,internal), 174 FUNCTION 10 rum_ts_join_pos(internal, internal), 175 STORAGE integer; 176 177/* 178 * rum_timestamp_ops operator class 179 */ 180 181-- timestamp operator class 182 183CREATE FUNCTION rum_timestamp_extract_value(timestamp,internal,internal,internal,internal) 184RETURNS internal 185AS 'MODULE_PATHNAME' 186LANGUAGE C STRICT IMMUTABLE; 187 188CREATE FUNCTION rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal) 189RETURNS int4 190AS 'MODULE_PATHNAME' 191LANGUAGE C STRICT IMMUTABLE; 192 193CREATE FUNCTION rum_timestamp_config(internal) 194RETURNS void 195AS 'MODULE_PATHNAME' 196LANGUAGE C IMMUTABLE STRICT; 197 198CREATE FUNCTION rum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal) 199RETURNS internal 200AS 'MODULE_PATHNAME' 201LANGUAGE C STRICT IMMUTABLE; 202 203CREATE FUNCTION rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal) 204RETURNS bool 205AS 'MODULE_PATHNAME' 206LANGUAGE C STRICT IMMUTABLE; 207 208CREATE FUNCTION rum_timestamp_outer_distance(timestamp, timestamp, smallint) 209RETURNS float8 210AS 'MODULE_PATHNAME' 211LANGUAGE C STRICT IMMUTABLE; 212 213CREATE OPERATOR CLASS rum_timestamp_ops 214DEFAULT FOR TYPE timestamp USING rum 215AS 216 OPERATOR 1 <, 217 OPERATOR 2 <=, 218 OPERATOR 3 =, 219 OPERATOR 4 >=, 220 OPERATOR 5 >, 221 --support 222 FUNCTION 1 timestamp_cmp(timestamp,timestamp), 223 FUNCTION 2 rum_timestamp_extract_value(timestamp,internal,internal,internal,internal), 224 FUNCTION 3 rum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal), 225 FUNCTION 4 rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal), 226 FUNCTION 5 rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal), 227 FUNCTION 6 rum_timestamp_config(internal), 228 -- support to timestamp distance in rum_tsvector_timestamp_ops 229 FUNCTION 9 rum_timestamp_outer_distance(timestamp, timestamp, smallint), 230 OPERATOR 20 <=> (timestamp,timestamp) FOR ORDER BY pg_catalog.float_ops, 231 OPERATOR 21 <=| (timestamp,timestamp) FOR ORDER BY pg_catalog.float_ops, 232 OPERATOR 22 |=> (timestamp,timestamp) FOR ORDER BY pg_catalog.float_ops, 233STORAGE timestamp; 234 235/* 236 * rum_tsvector_timestamp_ops operator class. 237 * 238 * Stores timestamp with tsvector. 239 */ 240 241CREATE FUNCTION rum_tsquery_timestamp_consistent(internal, smallint, tsvector, integer, internal, internal, internal, internal) 242RETURNS bool 243AS 'MODULE_PATHNAME' 244LANGUAGE C IMMUTABLE STRICT; 245 246/* 247 * !!!deprecated, use rum_tsvector_addon_ops!!! 248 */ 249CREATE OPERATOR CLASS rum_tsvector_timestamp_ops 250FOR TYPE tsvector USING rum 251AS 252 OPERATOR 1 @@ (tsvector, tsquery), 253 --support function 254 FUNCTION 1 gin_cmp_tslexeme(text, text), 255 FUNCTION 2 rum_extract_tsvector(tsvector,internal,internal,internal,internal), 256 FUNCTION 3 rum_extract_tsquery(tsquery,internal,smallint,internal,internal,internal,internal), 257 FUNCTION 4 rum_tsquery_timestamp_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 258 FUNCTION 5 gin_cmp_prefix(text,text,smallint,internal), 259 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 260 STORAGE text; 261 262/* 263 * rum_tsvector_hash_timestamp_ops operator class 264 * !!!deprecated, use rum_tsvector_hash_addon_ops!!! 265 */ 266 267CREATE OPERATOR CLASS rum_tsvector_hash_timestamp_ops 268FOR TYPE tsvector USING rum 269AS 270 OPERATOR 1 @@ (tsvector, tsquery), 271 --support function 272 FUNCTION 1 btint4cmp(integer, integer), 273 FUNCTION 2 rum_extract_tsvector_hash(tsvector,internal,internal,internal,internal), 274 FUNCTION 3 rum_extract_tsquery_hash(tsquery,internal,smallint,internal,internal,internal,internal), 275 FUNCTION 4 rum_tsquery_timestamp_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 276 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 277 STORAGE integer; 278 279/* 280 * rum_timestamptz_ops operator class 281 */ 282 283CREATE FUNCTION rum_timestamptz_distance(timestamptz, timestamptz) 284RETURNS float8 285AS 'MODULE_PATHNAME', 'rum_timestamp_distance' 286LANGUAGE C IMMUTABLE STRICT; 287 288CREATE OPERATOR <=> ( 289 PROCEDURE = rum_timestamptz_distance, 290 LEFTARG = timestamptz, 291 RIGHTARG = timestamptz, 292 COMMUTATOR = <=> 293); 294 295CREATE FUNCTION rum_timestamptz_left_distance(timestamptz, timestamptz) 296RETURNS float8 297AS 'MODULE_PATHNAME', 'rum_timestamp_left_distance' 298LANGUAGE C IMMUTABLE STRICT; 299 300CREATE OPERATOR <=| ( 301 PROCEDURE = rum_timestamptz_left_distance, 302 LEFTARG = timestamptz, 303 RIGHTARG = timestamptz, 304 COMMUTATOR = |=> 305); 306 307CREATE FUNCTION rum_timestamptz_right_distance(timestamptz, timestamptz) 308RETURNS float8 309AS 'MODULE_PATHNAME', 'rum_timestamp_right_distance' 310LANGUAGE C IMMUTABLE STRICT; 311 312CREATE OPERATOR |=> ( 313 PROCEDURE = rum_timestamptz_right_distance, 314 LEFTARG = timestamptz, 315 RIGHTARG = timestamptz, 316 COMMUTATOR = <=| 317); 318 319CREATE OPERATOR CLASS rum_timestamptz_ops 320DEFAULT FOR TYPE timestamptz USING rum 321AS 322 OPERATOR 1 <, 323 OPERATOR 2 <=, 324 OPERATOR 3 =, 325 OPERATOR 4 >=, 326 OPERATOR 5 >, 327 --support 328 FUNCTION 1 timestamptz_cmp(timestamptz,timestamptz), 329 FUNCTION 2 rum_timestamp_extract_value(timestamp,internal,internal,internal,internal), 330 FUNCTION 3 rum_timestamp_extract_query(timestamp,internal,smallint,internal,internal,internal,internal), 331 FUNCTION 4 rum_timestamp_consistent(internal,smallint,timestamp,int,internal,internal,internal,internal), 332 FUNCTION 5 rum_timestamp_compare_prefix(timestamp,timestamp,smallint,internal), 333 FUNCTION 6 rum_timestamp_config(internal), 334 -- support to timestamptz distance in rum_tsvector_timestamptz_ops 335 FUNCTION 9 rum_timestamp_outer_distance(timestamp, timestamp, smallint), 336 OPERATOR 20 <=> (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops, 337 OPERATOR 21 <=| (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops, 338 OPERATOR 22 |=> (timestamptz,timestamptz) FOR ORDER BY pg_catalog.float_ops, 339STORAGE timestamptz; 340 341/* 342 * rum_tsvector_timestamptz_ops operator class. 343 * 344 * Stores tsvector with timestamptz. 345 */ 346 347CREATE OPERATOR CLASS rum_tsvector_timestamptz_ops 348FOR TYPE tsvector USING rum 349AS 350 OPERATOR 1 @@ (tsvector, tsquery), 351 --support function 352 FUNCTION 1 gin_cmp_tslexeme(text, text), 353 FUNCTION 2 rum_extract_tsvector(tsvector,internal,internal,internal,internal), 354 FUNCTION 3 rum_extract_tsquery(tsquery,internal,smallint,internal,internal,internal,internal), 355 FUNCTION 4 rum_tsquery_timestamp_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 356 FUNCTION 5 gin_cmp_prefix(text,text,smallint,internal), 357 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 358 STORAGE text; 359 360/* 361 * rum_tsvector_hash_timestamptz_ops operator class 362 */ 363 364CREATE OPERATOR CLASS rum_tsvector_hash_timestamptz_ops 365FOR TYPE tsvector USING rum 366AS 367 OPERATOR 1 @@ (tsvector, tsquery), 368 --support function 369 FUNCTION 1 btint4cmp(integer, integer), 370 FUNCTION 2 rum_extract_tsvector_hash(tsvector,internal,internal,internal,internal), 371 FUNCTION 3 rum_extract_tsquery_hash(tsquery,internal,smallint,internal,internal,internal,internal), 372 FUNCTION 4 rum_tsquery_timestamp_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 373 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 374 STORAGE integer; 375 376/* 377 * rum_tsquery_ops operator class. 378 * 379 * Used for inversed text search. 380 */ 381 382CREATE FUNCTION ruminv_extract_tsquery(tsquery,internal,internal,internal,internal) 383RETURNS internal 384AS 'MODULE_PATHNAME' 385LANGUAGE C IMMUTABLE STRICT; 386 387CREATE FUNCTION ruminv_extract_tsvector(tsvector,internal,smallint,internal,internal,internal,internal) 388RETURNS internal 389AS 'MODULE_PATHNAME' 390LANGUAGE C IMMUTABLE STRICT; 391 392CREATE FUNCTION ruminv_tsvector_consistent(internal, smallint, tsvector, integer, internal, internal, internal, internal) 393RETURNS bool 394AS 'MODULE_PATHNAME' 395LANGUAGE C IMMUTABLE STRICT; 396 397CREATE FUNCTION ruminv_tsquery_config(internal) 398RETURNS void 399AS 'MODULE_PATHNAME' 400LANGUAGE C IMMUTABLE STRICT; 401 402CREATE OPERATOR CLASS rum_tsquery_ops 403DEFAULT FOR TYPE tsquery USING rum 404AS 405 OPERATOR 1 @@ (tsquery, tsvector), 406 FUNCTION 1 gin_cmp_tslexeme(text, text), 407 FUNCTION 2 ruminv_extract_tsquery(tsquery,internal,internal,internal,internal), 408 FUNCTION 3 ruminv_extract_tsvector(tsvector,internal,smallint,internal,internal,internal,internal), 409 FUNCTION 4 ruminv_tsvector_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 410 FUNCTION 6 ruminv_tsquery_config(internal), 411 STORAGE text; 412/* 413 * RUM version 1.1 414 */ 415 416CREATE FUNCTION rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal) 417RETURNS bool 418AS 'MODULE_PATHNAME' 419LANGUAGE C STRICT IMMUTABLE; 420 421ALTER FUNCTION 422 rum_tsquery_timestamp_consistent (internal,smallint,tsvector,int,internal,internal,internal,internal) 423 RENAME TO rum_tsquery_addon_consistent; 424 425CREATE FUNCTION rum_numeric_cmp(numeric, numeric) 426RETURNS int4 427AS 'MODULE_PATHNAME' 428LANGUAGE C STRICT IMMUTABLE; 429 430CREATE OPERATOR CLASS rum_tsvector_addon_ops 431FOR TYPE tsvector USING rum 432AS 433 OPERATOR 1 @@ (tsvector, tsquery), 434 --support function 435 FUNCTION 1 gin_cmp_tslexeme(text, text), 436 FUNCTION 2 rum_extract_tsvector(tsvector,internal,internal,internal,internal), 437 FUNCTION 3 rum_extract_tsquery(tsquery,internal,smallint,internal,internal,internal,internal), 438 FUNCTION 4 rum_tsquery_addon_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 439 FUNCTION 5 gin_cmp_prefix(text,text,smallint,internal), 440 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 441 STORAGE text; 442 443CREATE OPERATOR CLASS rum_tsvector_hash_addon_ops 444FOR TYPE tsvector USING rum 445AS 446 OPERATOR 1 @@ (tsvector, tsquery), 447 --support function 448 FUNCTION 1 btint4cmp(integer, integer), 449 FUNCTION 2 rum_extract_tsvector_hash(tsvector,internal,internal,internal,internal), 450 FUNCTION 3 rum_extract_tsquery_hash(tsquery,internal,smallint,internal,internal,internal,internal), 451 FUNCTION 4 rum_tsquery_addon_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 452 FUNCTION 7 rum_tsquery_pre_consistent(internal,smallint,tsvector,int,internal,internal,internal,internal), 453 STORAGE integer; 454 455/*--------------------int2-----------------------*/ 456 457CREATE FUNCTION rum_int2_extract_value(int2, internal) 458RETURNS internal 459AS 'MODULE_PATHNAME' 460LANGUAGE C STRICT IMMUTABLE; 461 462CREATE FUNCTION rum_int2_compare_prefix(int2, int2, int2, internal) 463RETURNS int4 464AS 'MODULE_PATHNAME' 465LANGUAGE C STRICT IMMUTABLE; 466 467CREATE FUNCTION rum_int2_extract_query(int2, internal, int2, internal, internal) 468RETURNS internal 469AS 'MODULE_PATHNAME' 470LANGUAGE C STRICT IMMUTABLE; 471 472 473 474CREATE FUNCTION rum_int2_distance(int2, int2) 475RETURNS float8 476AS 'MODULE_PATHNAME' 477LANGUAGE C IMMUTABLE STRICT; 478 479CREATE OPERATOR <=> ( 480 PROCEDURE = rum_int2_distance, 481 LEFTARG = int2, 482 RIGHTARG = int2, 483 COMMUTATOR = <=> 484); 485 486CREATE FUNCTION rum_int2_left_distance(int2, int2) 487RETURNS float8 488AS 'MODULE_PATHNAME' 489LANGUAGE C IMMUTABLE STRICT; 490 491CREATE OPERATOR <=| ( 492 PROCEDURE = rum_int2_left_distance, 493 LEFTARG = int2, 494 RIGHTARG = int2, 495 COMMUTATOR = |=> 496); 497 498CREATE FUNCTION rum_int2_right_distance(int2, int2) 499RETURNS float8 500AS 'MODULE_PATHNAME' 501LANGUAGE C IMMUTABLE STRICT; 502 503CREATE OPERATOR |=> ( 504 PROCEDURE = rum_int2_right_distance, 505 LEFTARG = int2, 506 RIGHTARG = int2, 507 COMMUTATOR = <=| 508); 509 510CREATE FUNCTION rum_int2_outer_distance(int2, int2, smallint) 511RETURNS float8 512AS 'MODULE_PATHNAME' 513LANGUAGE C STRICT IMMUTABLE; 514 515CREATE FUNCTION rum_int2_config(internal) 516RETURNS void 517AS 'MODULE_PATHNAME' 518LANGUAGE C IMMUTABLE STRICT; 519 520 521 522CREATE OPERATOR CLASS rum_int2_ops 523DEFAULT FOR TYPE int2 USING rum 524AS 525 OPERATOR 1 < , 526 OPERATOR 2 <= , 527 OPERATOR 3 = , 528 OPERATOR 4 >= , 529 OPERATOR 5 > , 530 OPERATOR 20 <=> (int2,int2) FOR ORDER BY pg_catalog.float_ops, 531 OPERATOR 21 <=| (int2,int2) FOR ORDER BY pg_catalog.float_ops, 532 OPERATOR 22 |=> (int2,int2) FOR ORDER BY pg_catalog.float_ops, 533 FUNCTION 1 btint2cmp(int2,int2), 534 FUNCTION 2 rum_int2_extract_value(int2, internal), 535 FUNCTION 3 rum_int2_extract_query(int2, internal, int2, internal, internal), 536 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 537 FUNCTION 5 rum_int2_compare_prefix(int2,int2,int2, internal), 538 -- support to int2 distance in rum_tsvector_addon_ops 539 FUNCTION 6 rum_int2_config(internal), 540 FUNCTION 9 rum_int2_outer_distance(int2, int2, smallint), 541STORAGE int2; 542 543/*--------------------int4-----------------------*/ 544 545CREATE FUNCTION rum_int4_extract_value(int4, internal) 546RETURNS internal 547AS 'MODULE_PATHNAME' 548LANGUAGE C STRICT IMMUTABLE; 549 550CREATE FUNCTION rum_int4_compare_prefix(int4, int4, int2, internal) 551RETURNS int4 552AS 'MODULE_PATHNAME' 553LANGUAGE C STRICT IMMUTABLE; 554 555CREATE FUNCTION rum_int4_extract_query(int4, internal, int2, internal, internal) 556RETURNS internal 557AS 'MODULE_PATHNAME' 558LANGUAGE C STRICT IMMUTABLE; 559 560 561 562CREATE FUNCTION rum_int4_distance(int4, int4) 563RETURNS float8 564AS 'MODULE_PATHNAME' 565LANGUAGE C IMMUTABLE STRICT; 566 567CREATE OPERATOR <=> ( 568 PROCEDURE = rum_int4_distance, 569 LEFTARG = int4, 570 RIGHTARG = int4, 571 COMMUTATOR = <=> 572); 573 574CREATE FUNCTION rum_int4_left_distance(int4, int4) 575RETURNS float8 576AS 'MODULE_PATHNAME' 577LANGUAGE C IMMUTABLE STRICT; 578 579CREATE OPERATOR <=| ( 580 PROCEDURE = rum_int4_left_distance, 581 LEFTARG = int4, 582 RIGHTARG = int4, 583 COMMUTATOR = |=> 584); 585 586CREATE FUNCTION rum_int4_right_distance(int4, int4) 587RETURNS float8 588AS 'MODULE_PATHNAME' 589LANGUAGE C IMMUTABLE STRICT; 590 591CREATE OPERATOR |=> ( 592 PROCEDURE = rum_int4_right_distance, 593 LEFTARG = int4, 594 RIGHTARG = int4, 595 COMMUTATOR = <=| 596); 597 598CREATE FUNCTION rum_int4_outer_distance(int4, int4, smallint) 599RETURNS float8 600AS 'MODULE_PATHNAME' 601LANGUAGE C STRICT IMMUTABLE; 602 603CREATE FUNCTION rum_int4_config(internal) 604RETURNS void 605AS 'MODULE_PATHNAME' 606LANGUAGE C IMMUTABLE STRICT; 607 608 609 610CREATE OPERATOR CLASS rum_int4_ops 611DEFAULT FOR TYPE int4 USING rum 612AS 613 OPERATOR 1 < , 614 OPERATOR 2 <= , 615 OPERATOR 3 = , 616 OPERATOR 4 >= , 617 OPERATOR 5 > , 618 OPERATOR 20 <=> (int4,int4) FOR ORDER BY pg_catalog.float_ops, 619 OPERATOR 21 <=| (int4,int4) FOR ORDER BY pg_catalog.float_ops, 620 OPERATOR 22 |=> (int4,int4) FOR ORDER BY pg_catalog.float_ops, 621 FUNCTION 1 btint4cmp(int4,int4), 622 FUNCTION 2 rum_int4_extract_value(int4, internal), 623 FUNCTION 3 rum_int4_extract_query(int4, internal, int2, internal, internal), 624 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 625 FUNCTION 5 rum_int4_compare_prefix(int4,int4,int2, internal), 626 -- support to int4 distance in rum_tsvector_addon_ops 627 FUNCTION 6 rum_int4_config(internal), 628 FUNCTION 9 rum_int4_outer_distance(int4, int4, smallint), 629STORAGE int4; 630 631/*--------------------int8-----------------------*/ 632 633CREATE FUNCTION rum_int8_extract_value(int8, internal) 634RETURNS internal 635AS 'MODULE_PATHNAME' 636LANGUAGE C STRICT IMMUTABLE; 637 638CREATE FUNCTION rum_int8_compare_prefix(int8, int8, int2, internal) 639RETURNS int4 640AS 'MODULE_PATHNAME' 641LANGUAGE C STRICT IMMUTABLE; 642 643CREATE FUNCTION rum_int8_extract_query(int8, internal, int2, internal, internal) 644RETURNS internal 645AS 'MODULE_PATHNAME' 646LANGUAGE C STRICT IMMUTABLE; 647 648 649 650CREATE FUNCTION rum_int8_distance(int8, int8) 651RETURNS float8 652AS 'MODULE_PATHNAME' 653LANGUAGE C IMMUTABLE STRICT; 654 655CREATE OPERATOR <=> ( 656 PROCEDURE = rum_int8_distance, 657 LEFTARG = int8, 658 RIGHTARG = int8, 659 COMMUTATOR = <=> 660); 661 662CREATE FUNCTION rum_int8_left_distance(int8, int8) 663RETURNS float8 664AS 'MODULE_PATHNAME' 665LANGUAGE C IMMUTABLE STRICT; 666 667CREATE OPERATOR <=| ( 668 PROCEDURE = rum_int8_left_distance, 669 LEFTARG = int8, 670 RIGHTARG = int8, 671 COMMUTATOR = |=> 672); 673 674CREATE FUNCTION rum_int8_right_distance(int8, int8) 675RETURNS float8 676AS 'MODULE_PATHNAME' 677LANGUAGE C IMMUTABLE STRICT; 678 679CREATE OPERATOR |=> ( 680 PROCEDURE = rum_int8_right_distance, 681 LEFTARG = int8, 682 RIGHTARG = int8, 683 COMMUTATOR = <=| 684); 685 686CREATE FUNCTION rum_int8_outer_distance(int8, int8, smallint) 687RETURNS float8 688AS 'MODULE_PATHNAME' 689LANGUAGE C STRICT IMMUTABLE; 690 691CREATE FUNCTION rum_int8_config(internal) 692RETURNS void 693AS 'MODULE_PATHNAME' 694LANGUAGE C IMMUTABLE STRICT; 695 696 697 698CREATE OPERATOR CLASS rum_int8_ops 699DEFAULT FOR TYPE int8 USING rum 700AS 701 OPERATOR 1 < , 702 OPERATOR 2 <= , 703 OPERATOR 3 = , 704 OPERATOR 4 >= , 705 OPERATOR 5 > , 706 OPERATOR 20 <=> (int8,int8) FOR ORDER BY pg_catalog.float_ops, 707 OPERATOR 21 <=| (int8,int8) FOR ORDER BY pg_catalog.float_ops, 708 OPERATOR 22 |=> (int8,int8) FOR ORDER BY pg_catalog.float_ops, 709 FUNCTION 1 btint8cmp(int8,int8), 710 FUNCTION 2 rum_int8_extract_value(int8, internal), 711 FUNCTION 3 rum_int8_extract_query(int8, internal, int2, internal, internal), 712 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 713 FUNCTION 5 rum_int8_compare_prefix(int8,int8,int2, internal), 714 -- support to int8 distance in rum_tsvector_addon_ops 715 FUNCTION 6 rum_int8_config(internal), 716 FUNCTION 9 rum_int8_outer_distance(int8, int8, smallint), 717STORAGE int8; 718 719/*--------------------float4-----------------------*/ 720 721CREATE FUNCTION rum_float4_extract_value(float4, internal) 722RETURNS internal 723AS 'MODULE_PATHNAME' 724LANGUAGE C STRICT IMMUTABLE; 725 726CREATE FUNCTION rum_float4_compare_prefix(float4, float4, int2, internal) 727RETURNS int4 728AS 'MODULE_PATHNAME' 729LANGUAGE C STRICT IMMUTABLE; 730 731CREATE FUNCTION rum_float4_extract_query(float4, internal, int2, internal, internal) 732RETURNS internal 733AS 'MODULE_PATHNAME' 734LANGUAGE C STRICT IMMUTABLE; 735 736 737 738CREATE FUNCTION rum_float4_distance(float4, float4) 739RETURNS float8 740AS 'MODULE_PATHNAME' 741LANGUAGE C IMMUTABLE STRICT; 742 743CREATE OPERATOR <=> ( 744 PROCEDURE = rum_float4_distance, 745 LEFTARG = float4, 746 RIGHTARG = float4, 747 COMMUTATOR = <=> 748); 749 750CREATE FUNCTION rum_float4_left_distance(float4, float4) 751RETURNS float8 752AS 'MODULE_PATHNAME' 753LANGUAGE C IMMUTABLE STRICT; 754 755CREATE OPERATOR <=| ( 756 PROCEDURE = rum_float4_left_distance, 757 LEFTARG = float4, 758 RIGHTARG = float4, 759 COMMUTATOR = |=> 760); 761 762CREATE FUNCTION rum_float4_right_distance(float4, float4) 763RETURNS float8 764AS 'MODULE_PATHNAME' 765LANGUAGE C IMMUTABLE STRICT; 766 767CREATE OPERATOR |=> ( 768 PROCEDURE = rum_float4_right_distance, 769 LEFTARG = float4, 770 RIGHTARG = float4, 771 COMMUTATOR = <=| 772); 773 774CREATE FUNCTION rum_float4_outer_distance(float4, float4, smallint) 775RETURNS float8 776AS 'MODULE_PATHNAME' 777LANGUAGE C STRICT IMMUTABLE; 778 779CREATE FUNCTION rum_float4_config(internal) 780RETURNS void 781AS 'MODULE_PATHNAME' 782LANGUAGE C IMMUTABLE STRICT; 783 784 785 786CREATE OPERATOR CLASS rum_float4_ops 787DEFAULT FOR TYPE float4 USING rum 788AS 789 OPERATOR 1 < , 790 OPERATOR 2 <= , 791 OPERATOR 3 = , 792 OPERATOR 4 >= , 793 OPERATOR 5 > , 794 OPERATOR 20 <=> (float4,float4) FOR ORDER BY pg_catalog.float_ops, 795 OPERATOR 21 <=| (float4,float4) FOR ORDER BY pg_catalog.float_ops, 796 OPERATOR 22 |=> (float4,float4) FOR ORDER BY pg_catalog.float_ops, 797 FUNCTION 1 btfloat4cmp(float4,float4), 798 FUNCTION 2 rum_float4_extract_value(float4, internal), 799 FUNCTION 3 rum_float4_extract_query(float4, internal, int2, internal, internal), 800 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 801 FUNCTION 5 rum_float4_compare_prefix(float4,float4,int2, internal), 802 -- support to float4 distance in rum_tsvector_addon_ops 803 FUNCTION 6 rum_float4_config(internal), 804 FUNCTION 9 rum_float4_outer_distance(float4, float4, smallint), 805STORAGE float4; 806 807/*--------------------float8-----------------------*/ 808 809CREATE FUNCTION rum_float8_extract_value(float8, internal) 810RETURNS internal 811AS 'MODULE_PATHNAME' 812LANGUAGE C STRICT IMMUTABLE; 813 814CREATE FUNCTION rum_float8_compare_prefix(float8, float8, int2, internal) 815RETURNS int4 816AS 'MODULE_PATHNAME' 817LANGUAGE C STRICT IMMUTABLE; 818 819CREATE FUNCTION rum_float8_extract_query(float8, internal, int2, internal, internal) 820RETURNS internal 821AS 'MODULE_PATHNAME' 822LANGUAGE C STRICT IMMUTABLE; 823 824 825 826CREATE FUNCTION rum_float8_distance(float8, float8) 827RETURNS float8 828AS 'MODULE_PATHNAME' 829LANGUAGE C IMMUTABLE STRICT; 830 831CREATE OPERATOR <=> ( 832 PROCEDURE = rum_float8_distance, 833 LEFTARG = float8, 834 RIGHTARG = float8, 835 COMMUTATOR = <=> 836); 837 838CREATE FUNCTION rum_float8_left_distance(float8, float8) 839RETURNS float8 840AS 'MODULE_PATHNAME' 841LANGUAGE C IMMUTABLE STRICT; 842 843CREATE OPERATOR <=| ( 844 PROCEDURE = rum_float8_left_distance, 845 LEFTARG = float8, 846 RIGHTARG = float8, 847 COMMUTATOR = |=> 848); 849 850CREATE FUNCTION rum_float8_right_distance(float8, float8) 851RETURNS float8 852AS 'MODULE_PATHNAME' 853LANGUAGE C IMMUTABLE STRICT; 854 855CREATE OPERATOR |=> ( 856 PROCEDURE = rum_float8_right_distance, 857 LEFTARG = float8, 858 RIGHTARG = float8, 859 COMMUTATOR = <=| 860); 861 862CREATE FUNCTION rum_float8_outer_distance(float8, float8, smallint) 863RETURNS float8 864AS 'MODULE_PATHNAME' 865LANGUAGE C STRICT IMMUTABLE; 866 867CREATE FUNCTION rum_float8_config(internal) 868RETURNS void 869AS 'MODULE_PATHNAME' 870LANGUAGE C IMMUTABLE STRICT; 871 872 873 874CREATE OPERATOR CLASS rum_float8_ops 875DEFAULT FOR TYPE float8 USING rum 876AS 877 OPERATOR 1 < , 878 OPERATOR 2 <= , 879 OPERATOR 3 = , 880 OPERATOR 4 >= , 881 OPERATOR 5 > , 882 OPERATOR 20 <=> (float8,float8) FOR ORDER BY pg_catalog.float_ops, 883 OPERATOR 21 <=| (float8,float8) FOR ORDER BY pg_catalog.float_ops, 884 OPERATOR 22 |=> (float8,float8) FOR ORDER BY pg_catalog.float_ops, 885 FUNCTION 1 btfloat8cmp(float8,float8), 886 FUNCTION 2 rum_float8_extract_value(float8, internal), 887 FUNCTION 3 rum_float8_extract_query(float8, internal, int2, internal, internal), 888 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 889 FUNCTION 5 rum_float8_compare_prefix(float8,float8,int2, internal), 890 -- support to float8 distance in rum_tsvector_addon_ops 891 FUNCTION 6 rum_float8_config(internal), 892 FUNCTION 9 rum_float8_outer_distance(float8, float8, smallint), 893STORAGE float8; 894 895/*--------------------money-----------------------*/ 896 897CREATE FUNCTION rum_money_extract_value(money, internal) 898RETURNS internal 899AS 'MODULE_PATHNAME' 900LANGUAGE C STRICT IMMUTABLE; 901 902CREATE FUNCTION rum_money_compare_prefix(money, money, int2, internal) 903RETURNS int4 904AS 'MODULE_PATHNAME' 905LANGUAGE C STRICT IMMUTABLE; 906 907CREATE FUNCTION rum_money_extract_query(money, internal, int2, internal, internal) 908RETURNS internal 909AS 'MODULE_PATHNAME' 910LANGUAGE C STRICT IMMUTABLE; 911 912 913 914CREATE FUNCTION rum_money_distance(money, money) 915RETURNS float8 916AS 'MODULE_PATHNAME' 917LANGUAGE C IMMUTABLE STRICT; 918 919CREATE OPERATOR <=> ( 920 PROCEDURE = rum_money_distance, 921 LEFTARG = money, 922 RIGHTARG = money, 923 COMMUTATOR = <=> 924); 925 926CREATE FUNCTION rum_money_left_distance(money, money) 927RETURNS float8 928AS 'MODULE_PATHNAME' 929LANGUAGE C IMMUTABLE STRICT; 930 931CREATE OPERATOR <=| ( 932 PROCEDURE = rum_money_left_distance, 933 LEFTARG = money, 934 RIGHTARG = money, 935 COMMUTATOR = |=> 936); 937 938CREATE FUNCTION rum_money_right_distance(money, money) 939RETURNS float8 940AS 'MODULE_PATHNAME' 941LANGUAGE C IMMUTABLE STRICT; 942 943CREATE OPERATOR |=> ( 944 PROCEDURE = rum_money_right_distance, 945 LEFTARG = money, 946 RIGHTARG = money, 947 COMMUTATOR = <=| 948); 949 950CREATE FUNCTION rum_money_outer_distance(money, money, smallint) 951RETURNS float8 952AS 'MODULE_PATHNAME' 953LANGUAGE C STRICT IMMUTABLE; 954 955CREATE FUNCTION rum_money_config(internal) 956RETURNS void 957AS 'MODULE_PATHNAME' 958LANGUAGE C IMMUTABLE STRICT; 959 960 961 962CREATE OPERATOR CLASS rum_money_ops 963DEFAULT FOR TYPE money USING rum 964AS 965 OPERATOR 1 < , 966 OPERATOR 2 <= , 967 OPERATOR 3 = , 968 OPERATOR 4 >= , 969 OPERATOR 5 > , 970 OPERATOR 20 <=> (money,money) FOR ORDER BY pg_catalog.float_ops, 971 OPERATOR 21 <=| (money,money) FOR ORDER BY pg_catalog.float_ops, 972 OPERATOR 22 |=> (money,money) FOR ORDER BY pg_catalog.float_ops, 973 FUNCTION 1 cash_cmp(money,money), 974 FUNCTION 2 rum_money_extract_value(money, internal), 975 FUNCTION 3 rum_money_extract_query(money, internal, int2, internal, internal), 976 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 977 FUNCTION 5 rum_money_compare_prefix(money,money,int2, internal), 978 -- support to money distance in rum_tsvector_addon_ops 979 FUNCTION 6 rum_money_config(internal), 980 FUNCTION 9 rum_money_outer_distance(money, money, smallint), 981STORAGE money; 982 983/*--------------------oid-----------------------*/ 984 985CREATE FUNCTION rum_oid_extract_value(oid, internal) 986RETURNS internal 987AS 'MODULE_PATHNAME' 988LANGUAGE C STRICT IMMUTABLE; 989 990CREATE FUNCTION rum_oid_compare_prefix(oid, oid, int2, internal) 991RETURNS int4 992AS 'MODULE_PATHNAME' 993LANGUAGE C STRICT IMMUTABLE; 994 995CREATE FUNCTION rum_oid_extract_query(oid, internal, int2, internal, internal) 996RETURNS internal 997AS 'MODULE_PATHNAME' 998LANGUAGE C STRICT IMMUTABLE; 999 1000 1001 1002CREATE FUNCTION rum_oid_distance(oid, oid) 1003RETURNS float8 1004AS 'MODULE_PATHNAME' 1005LANGUAGE C IMMUTABLE STRICT; 1006 1007CREATE OPERATOR <=> ( 1008 PROCEDURE = rum_oid_distance, 1009 LEFTARG = oid, 1010 RIGHTARG = oid, 1011 COMMUTATOR = <=> 1012); 1013 1014CREATE FUNCTION rum_oid_left_distance(oid, oid) 1015RETURNS float8 1016AS 'MODULE_PATHNAME' 1017LANGUAGE C IMMUTABLE STRICT; 1018 1019CREATE OPERATOR <=| ( 1020 PROCEDURE = rum_oid_left_distance, 1021 LEFTARG = oid, 1022 RIGHTARG = oid, 1023 COMMUTATOR = |=> 1024); 1025 1026CREATE FUNCTION rum_oid_right_distance(oid, oid) 1027RETURNS float8 1028AS 'MODULE_PATHNAME' 1029LANGUAGE C IMMUTABLE STRICT; 1030 1031CREATE OPERATOR |=> ( 1032 PROCEDURE = rum_oid_right_distance, 1033 LEFTARG = oid, 1034 RIGHTARG = oid, 1035 COMMUTATOR = <=| 1036); 1037 1038CREATE FUNCTION rum_oid_outer_distance(oid, oid, smallint) 1039RETURNS float8 1040AS 'MODULE_PATHNAME' 1041LANGUAGE C STRICT IMMUTABLE; 1042 1043CREATE FUNCTION rum_oid_config(internal) 1044RETURNS void 1045AS 'MODULE_PATHNAME' 1046LANGUAGE C IMMUTABLE STRICT; 1047 1048 1049 1050CREATE OPERATOR CLASS rum_oid_ops 1051DEFAULT FOR TYPE oid USING rum 1052AS 1053 OPERATOR 1 < , 1054 OPERATOR 2 <= , 1055 OPERATOR 3 = , 1056 OPERATOR 4 >= , 1057 OPERATOR 5 > , 1058 OPERATOR 20 <=> (oid,oid) FOR ORDER BY pg_catalog.float_ops, 1059 OPERATOR 21 <=| (oid,oid) FOR ORDER BY pg_catalog.float_ops, 1060 OPERATOR 22 |=> (oid,oid) FOR ORDER BY pg_catalog.float_ops, 1061 FUNCTION 1 btoidcmp(oid,oid), 1062 FUNCTION 2 rum_oid_extract_value(oid, internal), 1063 FUNCTION 3 rum_oid_extract_query(oid, internal, int2, internal, internal), 1064 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1065 FUNCTION 5 rum_oid_compare_prefix(oid,oid,int2, internal), 1066 -- support to oid distance in rum_tsvector_addon_ops 1067 FUNCTION 6 rum_oid_config(internal), 1068 FUNCTION 9 rum_oid_outer_distance(oid, oid, smallint), 1069STORAGE oid; 1070 1071/*--------------------time-----------------------*/ 1072 1073CREATE FUNCTION rum_time_extract_value(time, internal) 1074RETURNS internal 1075AS 'MODULE_PATHNAME' 1076LANGUAGE C STRICT IMMUTABLE; 1077 1078CREATE FUNCTION rum_time_compare_prefix(time, time, int2, internal) 1079RETURNS int4 1080AS 'MODULE_PATHNAME' 1081LANGUAGE C STRICT IMMUTABLE; 1082 1083CREATE FUNCTION rum_time_extract_query(time, internal, int2, internal, internal) 1084RETURNS internal 1085AS 'MODULE_PATHNAME' 1086LANGUAGE C STRICT IMMUTABLE; 1087 1088 1089CREATE OPERATOR CLASS rum_time_ops 1090DEFAULT FOR TYPE time USING rum 1091AS 1092 OPERATOR 1 < , 1093 OPERATOR 2 <= , 1094 OPERATOR 3 = , 1095 OPERATOR 4 >= , 1096 OPERATOR 5 > , 1097 FUNCTION 1 time_cmp(time,time), 1098 FUNCTION 2 rum_time_extract_value(time, internal), 1099 FUNCTION 3 rum_time_extract_query(time, internal, int2, internal, internal), 1100 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1101 FUNCTION 5 rum_time_compare_prefix(time,time,int2, internal), 1102STORAGE time; 1103 1104/*--------------------timetz-----------------------*/ 1105 1106CREATE FUNCTION rum_timetz_extract_value(timetz, internal) 1107RETURNS internal 1108AS 'MODULE_PATHNAME' 1109LANGUAGE C STRICT IMMUTABLE; 1110 1111CREATE FUNCTION rum_timetz_compare_prefix(timetz, timetz, int2, internal) 1112RETURNS int4 1113AS 'MODULE_PATHNAME' 1114LANGUAGE C STRICT IMMUTABLE; 1115 1116CREATE FUNCTION rum_timetz_extract_query(timetz, internal, int2, internal, internal) 1117RETURNS internal 1118AS 'MODULE_PATHNAME' 1119LANGUAGE C STRICT IMMUTABLE; 1120 1121 1122CREATE OPERATOR CLASS rum_timetz_ops 1123DEFAULT FOR TYPE timetz USING rum 1124AS 1125 OPERATOR 1 < , 1126 OPERATOR 2 <= , 1127 OPERATOR 3 = , 1128 OPERATOR 4 >= , 1129 OPERATOR 5 > , 1130 FUNCTION 1 timetz_cmp(timetz,timetz), 1131 FUNCTION 2 rum_timetz_extract_value(timetz, internal), 1132 FUNCTION 3 rum_timetz_extract_query(timetz, internal, int2, internal, internal), 1133 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1134 FUNCTION 5 rum_timetz_compare_prefix(timetz,timetz,int2, internal), 1135STORAGE timetz; 1136 1137/*--------------------date-----------------------*/ 1138 1139CREATE FUNCTION rum_date_extract_value(date, internal) 1140RETURNS internal 1141AS 'MODULE_PATHNAME' 1142LANGUAGE C STRICT IMMUTABLE; 1143 1144CREATE FUNCTION rum_date_compare_prefix(date, date, int2, internal) 1145RETURNS int4 1146AS 'MODULE_PATHNAME' 1147LANGUAGE C STRICT IMMUTABLE; 1148 1149CREATE FUNCTION rum_date_extract_query(date, internal, int2, internal, internal) 1150RETURNS internal 1151AS 'MODULE_PATHNAME' 1152LANGUAGE C STRICT IMMUTABLE; 1153 1154 1155CREATE OPERATOR CLASS rum_date_ops 1156DEFAULT FOR TYPE date USING rum 1157AS 1158 OPERATOR 1 < , 1159 OPERATOR 2 <= , 1160 OPERATOR 3 = , 1161 OPERATOR 4 >= , 1162 OPERATOR 5 > , 1163 FUNCTION 1 date_cmp(date,date), 1164 FUNCTION 2 rum_date_extract_value(date, internal), 1165 FUNCTION 3 rum_date_extract_query(date, internal, int2, internal, internal), 1166 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1167 FUNCTION 5 rum_date_compare_prefix(date,date,int2, internal), 1168STORAGE date; 1169 1170/*--------------------interval-----------------------*/ 1171 1172CREATE FUNCTION rum_interval_extract_value(interval, internal) 1173RETURNS internal 1174AS 'MODULE_PATHNAME' 1175LANGUAGE C STRICT IMMUTABLE; 1176 1177CREATE FUNCTION rum_interval_compare_prefix(interval, interval, int2, internal) 1178RETURNS int4 1179AS 'MODULE_PATHNAME' 1180LANGUAGE C STRICT IMMUTABLE; 1181 1182CREATE FUNCTION rum_interval_extract_query(interval, internal, int2, internal, internal) 1183RETURNS internal 1184AS 'MODULE_PATHNAME' 1185LANGUAGE C STRICT IMMUTABLE; 1186 1187 1188CREATE OPERATOR CLASS rum_interval_ops 1189DEFAULT FOR TYPE interval USING rum 1190AS 1191 OPERATOR 1 < , 1192 OPERATOR 2 <= , 1193 OPERATOR 3 = , 1194 OPERATOR 4 >= , 1195 OPERATOR 5 > , 1196 FUNCTION 1 interval_cmp(interval,interval), 1197 FUNCTION 2 rum_interval_extract_value(interval, internal), 1198 FUNCTION 3 rum_interval_extract_query(interval, internal, int2, internal, internal), 1199 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1200 FUNCTION 5 rum_interval_compare_prefix(interval,interval,int2, internal), 1201STORAGE interval; 1202 1203/*--------------------macaddr-----------------------*/ 1204 1205CREATE FUNCTION rum_macaddr_extract_value(macaddr, internal) 1206RETURNS internal 1207AS 'MODULE_PATHNAME' 1208LANGUAGE C STRICT IMMUTABLE; 1209 1210CREATE FUNCTION rum_macaddr_compare_prefix(macaddr, macaddr, int2, internal) 1211RETURNS int4 1212AS 'MODULE_PATHNAME' 1213LANGUAGE C STRICT IMMUTABLE; 1214 1215CREATE FUNCTION rum_macaddr_extract_query(macaddr, internal, int2, internal, internal) 1216RETURNS internal 1217AS 'MODULE_PATHNAME' 1218LANGUAGE C STRICT IMMUTABLE; 1219 1220 1221CREATE OPERATOR CLASS rum_macaddr_ops 1222DEFAULT FOR TYPE macaddr USING rum 1223AS 1224 OPERATOR 1 < , 1225 OPERATOR 2 <= , 1226 OPERATOR 3 = , 1227 OPERATOR 4 >= , 1228 OPERATOR 5 > , 1229 FUNCTION 1 macaddr_cmp(macaddr,macaddr), 1230 FUNCTION 2 rum_macaddr_extract_value(macaddr, internal), 1231 FUNCTION 3 rum_macaddr_extract_query(macaddr, internal, int2, internal, internal), 1232 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1233 FUNCTION 5 rum_macaddr_compare_prefix(macaddr,macaddr,int2, internal), 1234STORAGE macaddr; 1235 1236/*--------------------inet-----------------------*/ 1237 1238CREATE FUNCTION rum_inet_extract_value(inet, internal) 1239RETURNS internal 1240AS 'MODULE_PATHNAME' 1241LANGUAGE C STRICT IMMUTABLE; 1242 1243CREATE FUNCTION rum_inet_compare_prefix(inet, inet, int2, internal) 1244RETURNS int4 1245AS 'MODULE_PATHNAME' 1246LANGUAGE C STRICT IMMUTABLE; 1247 1248CREATE FUNCTION rum_inet_extract_query(inet, internal, int2, internal, internal) 1249RETURNS internal 1250AS 'MODULE_PATHNAME' 1251LANGUAGE C STRICT IMMUTABLE; 1252 1253 1254CREATE OPERATOR CLASS rum_inet_ops 1255DEFAULT FOR TYPE inet USING rum 1256AS 1257 OPERATOR 1 < , 1258 OPERATOR 2 <= , 1259 OPERATOR 3 = , 1260 OPERATOR 4 >= , 1261 OPERATOR 5 > , 1262 FUNCTION 1 network_cmp(inet,inet), 1263 FUNCTION 2 rum_inet_extract_value(inet, internal), 1264 FUNCTION 3 rum_inet_extract_query(inet, internal, int2, internal, internal), 1265 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1266 FUNCTION 5 rum_inet_compare_prefix(inet,inet,int2, internal), 1267STORAGE inet; 1268 1269/*--------------------cidr-----------------------*/ 1270 1271CREATE FUNCTION rum_cidr_extract_value(cidr, internal) 1272RETURNS internal 1273AS 'MODULE_PATHNAME' 1274LANGUAGE C STRICT IMMUTABLE; 1275 1276CREATE FUNCTION rum_cidr_compare_prefix(cidr, cidr, int2, internal) 1277RETURNS int4 1278AS 'MODULE_PATHNAME' 1279LANGUAGE C STRICT IMMUTABLE; 1280 1281CREATE FUNCTION rum_cidr_extract_query(cidr, internal, int2, internal, internal) 1282RETURNS internal 1283AS 'MODULE_PATHNAME' 1284LANGUAGE C STRICT IMMUTABLE; 1285 1286 1287CREATE OPERATOR CLASS rum_cidr_ops 1288DEFAULT FOR TYPE cidr USING rum 1289AS 1290 OPERATOR 1 < (inet, inet), 1291 OPERATOR 2 <= (inet, inet), 1292 OPERATOR 3 = (inet, inet), 1293 OPERATOR 4 >= (inet, inet), 1294 OPERATOR 5 > (inet, inet), 1295 FUNCTION 1 network_cmp(inet,inet), 1296 FUNCTION 2 rum_cidr_extract_value(cidr, internal), 1297 FUNCTION 3 rum_cidr_extract_query(cidr, internal, int2, internal, internal), 1298 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1299 FUNCTION 5 rum_cidr_compare_prefix(cidr,cidr,int2, internal), 1300STORAGE cidr; 1301 1302/*--------------------text-----------------------*/ 1303 1304CREATE FUNCTION rum_text_extract_value(text, internal) 1305RETURNS internal 1306AS 'MODULE_PATHNAME' 1307LANGUAGE C STRICT IMMUTABLE; 1308 1309CREATE FUNCTION rum_text_compare_prefix(text, text, int2, internal) 1310RETURNS int4 1311AS 'MODULE_PATHNAME' 1312LANGUAGE C STRICT IMMUTABLE; 1313 1314CREATE FUNCTION rum_text_extract_query(text, internal, int2, internal, internal) 1315RETURNS internal 1316AS 'MODULE_PATHNAME' 1317LANGUAGE C STRICT IMMUTABLE; 1318 1319 1320CREATE OPERATOR CLASS rum_text_ops 1321DEFAULT FOR TYPE text USING rum 1322AS 1323 OPERATOR 1 < , 1324 OPERATOR 2 <= , 1325 OPERATOR 3 = , 1326 OPERATOR 4 >= , 1327 OPERATOR 5 > , 1328 FUNCTION 1 bttextcmp(text,text), 1329 FUNCTION 2 rum_text_extract_value(text, internal), 1330 FUNCTION 3 rum_text_extract_query(text, internal, int2, internal, internal), 1331 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1332 FUNCTION 5 rum_text_compare_prefix(text,text,int2, internal), 1333STORAGE text; 1334 1335/*--------------------varchar-----------------------*/ 1336 1337 1338CREATE OPERATOR CLASS rum_varchar_ops 1339DEFAULT FOR TYPE varchar USING rum 1340AS 1341 OPERATOR 1 < (text, text), 1342 OPERATOR 2 <= (text, text), 1343 OPERATOR 3 = (text, text), 1344 OPERATOR 4 >= (text, text), 1345 OPERATOR 5 > (text, text), 1346 FUNCTION 1 bttextcmp(text,text), 1347 FUNCTION 2 rum_text_extract_value(text, internal), 1348 FUNCTION 3 rum_text_extract_query(text, internal, int2, internal, internal), 1349 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1350 FUNCTION 5 rum_text_compare_prefix(text,text,int2, internal), 1351STORAGE varchar; 1352 1353/*--------------------"char"-----------------------*/ 1354 1355CREATE FUNCTION rum_char_extract_value("char", internal) 1356RETURNS internal 1357AS 'MODULE_PATHNAME' 1358LANGUAGE C STRICT IMMUTABLE; 1359 1360CREATE FUNCTION rum_char_compare_prefix("char", "char", int2, internal) 1361RETURNS int4 1362AS 'MODULE_PATHNAME' 1363LANGUAGE C STRICT IMMUTABLE; 1364 1365CREATE FUNCTION rum_char_extract_query("char", internal, int2, internal, internal) 1366RETURNS internal 1367AS 'MODULE_PATHNAME' 1368LANGUAGE C STRICT IMMUTABLE; 1369 1370 1371CREATE OPERATOR CLASS rum_char_ops 1372DEFAULT FOR TYPE "char" USING rum 1373AS 1374 OPERATOR 1 < , 1375 OPERATOR 2 <= , 1376 OPERATOR 3 = , 1377 OPERATOR 4 >= , 1378 OPERATOR 5 > , 1379 FUNCTION 1 btcharcmp("char","char"), 1380 FUNCTION 2 rum_char_extract_value("char", internal), 1381 FUNCTION 3 rum_char_extract_query("char", internal, int2, internal, internal), 1382 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1383 FUNCTION 5 rum_char_compare_prefix("char","char",int2, internal), 1384STORAGE "char"; 1385 1386/*--------------------bytea-----------------------*/ 1387 1388CREATE FUNCTION rum_bytea_extract_value(bytea, internal) 1389RETURNS internal 1390AS 'MODULE_PATHNAME' 1391LANGUAGE C STRICT IMMUTABLE; 1392 1393CREATE FUNCTION rum_bytea_compare_prefix(bytea, bytea, int2, internal) 1394RETURNS int4 1395AS 'MODULE_PATHNAME' 1396LANGUAGE C STRICT IMMUTABLE; 1397 1398CREATE FUNCTION rum_bytea_extract_query(bytea, internal, int2, internal, internal) 1399RETURNS internal 1400AS 'MODULE_PATHNAME' 1401LANGUAGE C STRICT IMMUTABLE; 1402 1403 1404CREATE OPERATOR CLASS rum_bytea_ops 1405DEFAULT FOR TYPE bytea USING rum 1406AS 1407 OPERATOR 1 < , 1408 OPERATOR 2 <= , 1409 OPERATOR 3 = , 1410 OPERATOR 4 >= , 1411 OPERATOR 5 > , 1412 FUNCTION 1 byteacmp(bytea,bytea), 1413 FUNCTION 2 rum_bytea_extract_value(bytea, internal), 1414 FUNCTION 3 rum_bytea_extract_query(bytea, internal, int2, internal, internal), 1415 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1416 FUNCTION 5 rum_bytea_compare_prefix(bytea,bytea,int2, internal), 1417STORAGE bytea; 1418 1419/*--------------------bit-----------------------*/ 1420 1421CREATE FUNCTION rum_bit_extract_value(bit, internal) 1422RETURNS internal 1423AS 'MODULE_PATHNAME' 1424LANGUAGE C STRICT IMMUTABLE; 1425 1426CREATE FUNCTION rum_bit_compare_prefix(bit, bit, int2, internal) 1427RETURNS int4 1428AS 'MODULE_PATHNAME' 1429LANGUAGE C STRICT IMMUTABLE; 1430 1431CREATE FUNCTION rum_bit_extract_query(bit, internal, int2, internal, internal) 1432RETURNS internal 1433AS 'MODULE_PATHNAME' 1434LANGUAGE C STRICT IMMUTABLE; 1435 1436 1437CREATE OPERATOR CLASS rum_bit_ops 1438DEFAULT FOR TYPE bit USING rum 1439AS 1440 OPERATOR 1 < , 1441 OPERATOR 2 <= , 1442 OPERATOR 3 = , 1443 OPERATOR 4 >= , 1444 OPERATOR 5 > , 1445 FUNCTION 1 bitcmp(bit,bit), 1446 FUNCTION 2 rum_bit_extract_value(bit, internal), 1447 FUNCTION 3 rum_bit_extract_query(bit, internal, int2, internal, internal), 1448 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1449 FUNCTION 5 rum_bit_compare_prefix(bit,bit,int2, internal), 1450STORAGE bit; 1451 1452/*--------------------varbit-----------------------*/ 1453 1454CREATE FUNCTION rum_varbit_extract_value(varbit, internal) 1455RETURNS internal 1456AS 'MODULE_PATHNAME' 1457LANGUAGE C STRICT IMMUTABLE; 1458 1459CREATE FUNCTION rum_varbit_compare_prefix(varbit, varbit, int2, internal) 1460RETURNS int4 1461AS 'MODULE_PATHNAME' 1462LANGUAGE C STRICT IMMUTABLE; 1463 1464CREATE FUNCTION rum_varbit_extract_query(varbit, internal, int2, internal, internal) 1465RETURNS internal 1466AS 'MODULE_PATHNAME' 1467LANGUAGE C STRICT IMMUTABLE; 1468 1469 1470CREATE OPERATOR CLASS rum_varbit_ops 1471DEFAULT FOR TYPE varbit USING rum 1472AS 1473 OPERATOR 1 < , 1474 OPERATOR 2 <= , 1475 OPERATOR 3 = , 1476 OPERATOR 4 >= , 1477 OPERATOR 5 > , 1478 FUNCTION 1 varbitcmp(varbit,varbit), 1479 FUNCTION 2 rum_varbit_extract_value(varbit, internal), 1480 FUNCTION 3 rum_varbit_extract_query(varbit, internal, int2, internal, internal), 1481 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1482 FUNCTION 5 rum_varbit_compare_prefix(varbit,varbit,int2, internal), 1483STORAGE varbit; 1484 1485/*--------------------numeric-----------------------*/ 1486 1487CREATE FUNCTION rum_numeric_extract_value(numeric, internal) 1488RETURNS internal 1489AS 'MODULE_PATHNAME' 1490LANGUAGE C STRICT IMMUTABLE; 1491 1492CREATE FUNCTION rum_numeric_compare_prefix(numeric, numeric, int2, internal) 1493RETURNS int4 1494AS 'MODULE_PATHNAME' 1495LANGUAGE C STRICT IMMUTABLE; 1496 1497CREATE FUNCTION rum_numeric_extract_query(numeric, internal, int2, internal, internal) 1498RETURNS internal 1499AS 'MODULE_PATHNAME' 1500LANGUAGE C STRICT IMMUTABLE; 1501 1502 1503CREATE OPERATOR CLASS rum_numeric_ops 1504DEFAULT FOR TYPE numeric USING rum 1505AS 1506 OPERATOR 1 < , 1507 OPERATOR 2 <= , 1508 OPERATOR 3 = , 1509 OPERATOR 4 >= , 1510 OPERATOR 5 > , 1511 FUNCTION 1 rum_numeric_cmp(numeric,numeric), 1512 FUNCTION 2 rum_numeric_extract_value(numeric, internal), 1513 FUNCTION 3 rum_numeric_extract_query(numeric, internal, int2, internal, internal), 1514 FUNCTION 4 rum_btree_consistent(internal,smallint,internal,int,internal,internal,internal,internal), 1515 FUNCTION 5 rum_numeric_compare_prefix(numeric,numeric,int2, internal), 1516STORAGE numeric; 1517 1518/* 1519 * RUM version 1.2 1520 */ 1521 1522/*--------------------anyarray-----------------------*/ 1523 1524CREATE FUNCTION rum_anyarray_config(internal) 1525RETURNS void 1526AS 'MODULE_PATHNAME' 1527LANGUAGE C IMMUTABLE STRICT; 1528 1529 1530CREATE OR REPLACE FUNCTION rum_anyarray_similar(anyarray,anyarray) 1531RETURNS bool 1532AS 'MODULE_PATHNAME' 1533LANGUAGE C STRICT STABLE; 1534 1535CREATE OPERATOR % ( 1536 PROCEDURE = rum_anyarray_similar, 1537 LEFTARG = anyarray, 1538 RIGHTARG = anyarray, 1539 COMMUTATOR = '%', 1540 RESTRICT = contsel, 1541 JOIN = contjoinsel 1542); 1543 1544 1545CREATE OR REPLACE FUNCTION rum_anyarray_distance(anyarray,anyarray) 1546RETURNS float8 1547AS 'MODULE_PATHNAME' 1548LANGUAGE C STRICT STABLE; 1549 1550CREATE OPERATOR <=> ( 1551 PROCEDURE = rum_anyarray_distance, 1552 LEFTARG = anyarray, 1553 RIGHTARG = anyarray, 1554 COMMUTATOR = '<=>' 1555); 1556 1557 1558CREATE FUNCTION rum_extract_anyarray(anyarray,internal,internal,internal,internal) 1559RETURNS internal 1560AS 'MODULE_PATHNAME' 1561LANGUAGE C IMMUTABLE STRICT; 1562 1563CREATE FUNCTION rum_extract_anyarray_query(anyarray,internal,smallint,internal,internal,internal,internal) 1564RETURNS internal 1565AS 'MODULE_PATHNAME' 1566LANGUAGE C IMMUTABLE STRICT; 1567 1568CREATE FUNCTION rum_anyarray_consistent(internal, smallint, anyarray, integer, internal, internal, internal, internal) 1569RETURNS bool 1570AS 'MODULE_PATHNAME' 1571LANGUAGE C IMMUTABLE STRICT; 1572 1573CREATE FUNCTION rum_anyarray_ordering(internal,smallint,anyarray,int,internal,internal,internal,internal,internal) 1574RETURNS float8 1575AS 'MODULE_PATHNAME' 1576LANGUAGE C IMMUTABLE STRICT; 1577 1578 1579CREATE OPERATOR CLASS rum_anyarray_ops 1580DEFAULT FOR TYPE anyarray USING rum 1581AS 1582 OPERATOR 1 && (anyarray, anyarray), 1583 OPERATOR 2 @> (anyarray, anyarray), 1584 OPERATOR 3 <@ (anyarray, anyarray), 1585 OPERATOR 4 = (anyarray, anyarray), 1586 OPERATOR 5 % (anyarray, anyarray), 1587 OPERATOR 20 <=> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops, 1588 --dispatch function 1 for concrete type 1589 FUNCTION 2 rum_extract_anyarray(anyarray,internal,internal,internal,internal), 1590 FUNCTION 3 rum_extract_anyarray_query(anyarray,internal,smallint,internal,internal,internal,internal), 1591 FUNCTION 4 rum_anyarray_consistent(internal,smallint,anyarray,integer,internal,internal,internal,internal), 1592 FUNCTION 6 rum_anyarray_config(internal), 1593 FUNCTION 8 rum_anyarray_ordering(internal,smallint,anyarray,int,internal,internal,internal,internal,internal), 1594 STORAGE anyelement; 1595 1596CREATE OPERATOR CLASS rum_anyarray_addon_ops 1597FOR TYPE anyarray USING rum 1598AS 1599 OPERATOR 1 && (anyarray, anyarray), 1600 OPERATOR 2 @> (anyarray, anyarray), 1601 OPERATOR 3 <@ (anyarray, anyarray), 1602 OPERATOR 4 = (anyarray, anyarray), 1603 --dispatch function 1 for concrete type 1604 FUNCTION 2 ginarrayextract(anyarray,internal,internal), 1605 FUNCTION 3 ginqueryarrayextract(anyarray,internal,smallint,internal,internal,internal,internal), 1606 FUNCTION 4 ginarrayconsistent(internal,smallint,anyarray,integer,internal,internal,internal,internal), 1607 STORAGE anyelement; 1608 1609/*--------------------int2-----------------------*/ 1610 1611CREATE FUNCTION rum_int2_key_distance(int2, int2, smallint) 1612RETURNS float8 1613AS 'MODULE_PATHNAME' 1614LANGUAGE C IMMUTABLE STRICT; 1615 1616 1617ALTER OPERATOR FAMILY rum_int2_ops USING rum ADD 1618 FUNCTION 8 (int2,int2) rum_int2_key_distance(int2, int2, smallint); 1619 1620/*--------------------int4-----------------------*/ 1621 1622CREATE FUNCTION rum_int4_key_distance(int4, int4, smallint) 1623RETURNS float8 1624AS 'MODULE_PATHNAME' 1625LANGUAGE C IMMUTABLE STRICT; 1626 1627 1628ALTER OPERATOR FAMILY rum_int4_ops USING rum ADD 1629 FUNCTION 8 (int4,int4) rum_int4_key_distance(int4, int4, smallint); 1630 1631/*--------------------int8-----------------------*/ 1632 1633CREATE FUNCTION rum_int8_key_distance(int8, int8, smallint) 1634RETURNS float8 1635AS 'MODULE_PATHNAME' 1636LANGUAGE C IMMUTABLE STRICT; 1637 1638 1639ALTER OPERATOR FAMILY rum_int8_ops USING rum ADD 1640 FUNCTION 8 (int8,int8) rum_int8_key_distance(int8, int8, smallint); 1641 1642/*--------------------float4-----------------------*/ 1643 1644CREATE FUNCTION rum_float4_key_distance(float4, float4, smallint) 1645RETURNS float8 1646AS 'MODULE_PATHNAME' 1647LANGUAGE C IMMUTABLE STRICT; 1648 1649 1650ALTER OPERATOR FAMILY rum_float4_ops USING rum ADD 1651 FUNCTION 8 (float4,float4) rum_float4_key_distance(float4, float4, smallint); 1652 1653/*--------------------float8-----------------------*/ 1654 1655CREATE FUNCTION rum_float8_key_distance(float8, float8, smallint) 1656RETURNS float8 1657AS 'MODULE_PATHNAME' 1658LANGUAGE C IMMUTABLE STRICT; 1659 1660 1661ALTER OPERATOR FAMILY rum_float8_ops USING rum ADD 1662 FUNCTION 8 (float8,float8) rum_float8_key_distance(float8, float8, smallint); 1663 1664/*--------------------money-----------------------*/ 1665 1666CREATE FUNCTION rum_money_key_distance(money, money, smallint) 1667RETURNS float8 1668AS 'MODULE_PATHNAME' 1669LANGUAGE C IMMUTABLE STRICT; 1670 1671 1672ALTER OPERATOR FAMILY rum_money_ops USING rum ADD 1673 FUNCTION 8 (money,money) rum_money_key_distance(money, money, smallint); 1674 1675/*--------------------oid-----------------------*/ 1676 1677CREATE FUNCTION rum_oid_key_distance(oid, oid, smallint) 1678RETURNS float8 1679AS 'MODULE_PATHNAME' 1680LANGUAGE C IMMUTABLE STRICT; 1681 1682 1683ALTER OPERATOR FAMILY rum_oid_ops USING rum ADD 1684 FUNCTION 8 (oid,oid) rum_oid_key_distance(oid, oid, smallint); 1685 1686/*--------------------timestamp-----------------------*/ 1687 1688CREATE FUNCTION rum_timestamp_key_distance(timestamp, timestamp, smallint) 1689RETURNS float8 1690AS 'MODULE_PATHNAME' 1691LANGUAGE C IMMUTABLE STRICT; 1692 1693 1694ALTER OPERATOR FAMILY rum_timestamp_ops USING rum ADD 1695 FUNCTION 8 (timestamp,timestamp) rum_timestamp_key_distance(timestamp, timestamp, smallint); 1696 1697/*--------------------timestamptz-----------------------*/ 1698 1699CREATE FUNCTION rum_timestamptz_key_distance(timestamptz, timestamptz, smallint) 1700RETURNS float8 1701AS 'MODULE_PATHNAME' 1702LANGUAGE C IMMUTABLE STRICT; 1703 1704 1705ALTER OPERATOR FAMILY rum_timestamptz_ops USING rum ADD 1706 FUNCTION 8 (timestamptz,timestamptz) rum_timestamptz_key_distance(timestamptz, timestamptz, smallint); 1707 1708