| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| -- |
| -- agtype - access operators ( ->, ->> ) |
| -- |
| |
| CREATE FUNCTION ag_catalog.agtype_object_field(agtype, text) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- get agtype object field |
| CREATE OPERATOR -> ( |
| LEFTARG = agtype, |
| RIGHTARG = text, |
| FUNCTION = ag_catalog.agtype_object_field |
| ); |
| |
| CREATE FUNCTION ag_catalog.agtype_object_field_text(agtype, text) |
| RETURNS text |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- get agtype object field as text |
| CREATE OPERATOR ->> ( |
| LEFTARG = agtype, |
| RIGHTARG = text, |
| FUNCTION = ag_catalog.agtype_object_field_text |
| ); |
| |
| CREATE FUNCTION ag_catalog.agtype_object_field_agtype(agtype, agtype) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- get agtype object field or array element |
| CREATE OPERATOR -> ( |
| LEFTARG = agtype, |
| RIGHTARG = agtype, |
| FUNCTION = ag_catalog.agtype_object_field_agtype |
| ); |
| |
| CREATE FUNCTION ag_catalog.agtype_object_field_text_agtype(agtype, agtype) |
| RETURNS text |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- get agtype object field or array element as text |
| CREATE OPERATOR ->> ( |
| LEFTARG = agtype, |
| RIGHTARG = agtype, |
| FUNCTION = ag_catalog.agtype_object_field_text_agtype |
| ); |
| |
| CREATE FUNCTION ag_catalog.agtype_array_element(agtype, int4) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- get agtype array element |
| CREATE OPERATOR -> ( |
| LEFTARG = agtype, |
| RIGHTARG = int4, |
| FUNCTION = ag_catalog.agtype_array_element |
| ); |
| |
| CREATE FUNCTION ag_catalog.agtype_array_element_text(agtype, int4) |
| RETURNS text |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- get agtype array element as text |
| CREATE OPERATOR ->> ( |
| LEFTARG = agtype, |
| RIGHTARG = int4, |
| FUNCTION = ag_catalog.agtype_array_element_text |
| ); |
| |
| CREATE FUNCTION ag_catalog.agtype_extract_path(agtype, agtype) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- return the extracted path as agtype |
| CREATE OPERATOR #> ( |
| LEFTARG = agtype, |
| RIGHTARG = agtype, |
| FUNCTION = ag_catalog.agtype_extract_path |
| ); |
| |
| CREATE FUNCTION ag_catalog.agtype_extract_path_text(agtype, agtype) |
| RETURNS text |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| -- return the extracted path as text |
| CREATE OPERATOR #>> ( |
| LEFTARG = agtype, |
| RIGHTARG = agtype, |
| FUNCTION = ag_catalog.agtype_extract_path_text |
| ); |
| |
| -- |
| -- agtype - access operators |
| -- |
| |
| -- for series of `map.key` and `container[expr]` |
| CREATE FUNCTION ag_catalog.agtype_access_operator(VARIADIC agtype[]) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| RETURNS NULL ON NULL INPUT |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| CREATE FUNCTION ag_catalog.agtype_access_slice(agtype, agtype, agtype) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |
| CREATE FUNCTION ag_catalog.agtype_in_operator(agtype, agtype) |
| RETURNS agtype |
| LANGUAGE c |
| IMMUTABLE |
| PARALLEL SAFE |
| AS 'MODULE_PATHNAME'; |
| |