mirror of
https://github.com/postgres/postgres.git
synced 2025-10-18 04:29:09 +03:00
Create the system catalog infrastructure needed for KNNGIST.
This commit adds columns amoppurpose and amopsortfamily to pg_amop, and column amcanorderbyop to pg_am. For the moment all the entries in amcanorderbyop are "false", since the underlying support isn't there yet. Also, extend the CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY commands with [ FOR SEARCH | FOR ORDER BY sort_operator_family ] clauses to allow the new columns of pg_amop to be populated, and create pg_dump support for dumping that information. I also added some documentation, although it's perhaps a bit premature given that the feature doesn't do anything useful yet. Teodor Sigaev, Robert Haas, Tom Lane
This commit is contained in:
@@ -295,7 +295,7 @@ static RangeVar *makeRangeVarFromAnyName(List *names, int position, core_yyscan_
|
||||
ctext_expr_list ctext_row def_list indirection opt_indirection
|
||||
reloption_list group_clause TriggerFuncArgs select_limit
|
||||
opt_select_limit opclass_item_list opclass_drop_list
|
||||
opt_opfamily transaction_mode_list_or_empty
|
||||
opclass_purpose opt_opfamily transaction_mode_list_or_empty
|
||||
OptTableFuncElementList TableFuncElementList opt_type_modifiers
|
||||
prep_type_clause
|
||||
execute_param_clause using_clause returning_clause
|
||||
@@ -3935,22 +3935,25 @@ opclass_item_list:
|
||||
;
|
||||
|
||||
opclass_item:
|
||||
OPERATOR Iconst any_operator opt_recheck
|
||||
OPERATOR Iconst any_operator opclass_purpose opt_recheck
|
||||
{
|
||||
CreateOpClassItem *n = makeNode(CreateOpClassItem);
|
||||
n->itemtype = OPCLASS_ITEM_OPERATOR;
|
||||
n->name = $3;
|
||||
n->args = NIL;
|
||||
n->number = $2;
|
||||
n->order_family = $4;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| OPERATOR Iconst any_operator oper_argtypes opt_recheck
|
||||
| OPERATOR Iconst any_operator oper_argtypes opclass_purpose
|
||||
opt_recheck
|
||||
{
|
||||
CreateOpClassItem *n = makeNode(CreateOpClassItem);
|
||||
n->itemtype = OPCLASS_ITEM_OPERATOR;
|
||||
n->name = $3;
|
||||
n->args = $4;
|
||||
n->number = $2;
|
||||
n->order_family = $5;
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
| FUNCTION Iconst func_name func_args
|
||||
@@ -3989,6 +3992,11 @@ opt_opfamily: FAMILY any_name { $$ = $2; }
|
||||
| /*EMPTY*/ { $$ = NIL; }
|
||||
;
|
||||
|
||||
opclass_purpose: FOR SEARCH { $$ = NIL; }
|
||||
| FOR ORDER BY any_name { $$ = $4; }
|
||||
| /*EMPTY*/ { $$ = NIL; }
|
||||
;
|
||||
|
||||
opt_recheck: RECHECK
|
||||
{
|
||||
/*
|
||||
|
Reference in New Issue
Block a user