54 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
55 errmsg(
"hstore allows only one subscript"),
73 (
errcode(ERRCODE_DATATYPE_MISMATCH),
74 errmsg(
"hstore subscript must have type text"),
82 sbsref->refrestype = TEXTOID;
83 sbsref->reftypmod = -1;
155 (
errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
156 errmsg(
"hstore subscript in assignment must not be null")));
214 for (s1idx = s2idx = 0; s1idx < s1count || s2idx < 1; ++outcount)
218 if (s1idx >= s1count)
227 if (s1keylen == s2keylen)
291 .fetch_strict =
true,
292 .fetch_leakproof =
true,
293 .store_leakproof =
false
Datum idx(PG_FUNCTION_ARGS)
#define Assert(condition)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define DatumGetTextPP(X)
#define PG_RETURN_POINTER(x)
Datum difference(PG_FUNCTION_ARGS)
#define CALCDATASIZE(x, lenstr)
#define DatumGetHStoreP(d)
#define HS_FINALIZE(hsp_, count_, buf_, ptr_)
#define HSTORE_KEY(arr_, str_, i_)
#define HS_ADDITEM(dent_, dbuf_, dptr_, pair_)
#define HSTORE_VALISNULL(arr_, i_)
#define HSTORE_VALLEN(arr_, i_)
#define HSTORE_KEYLEN(arr_, i_)
PGDLLEXPORT int hstoreFindKey(HStore *hs, int *lowbound, char *key, int keylen)
#define HS_SETCOUNT(hsp_, c_)
#define HS_COPYITEM(dent_, dbuf_, dptr_, sptr_, klen_, vlen_, vnull_)
#define HSTORE_VAL(arr_, str_, i_)
#define hstoreCheckKeyLen
#define hstoreCheckValLen
Datum hstore_subscript_handler(PG_FUNCTION_ARGS)
static void hstore_subscript_transform(SubscriptingRef *sbsref, List *indirection, ParseState *pstate, bool isSlice, bool isAssignment)
static void hstore_exec_setup(const SubscriptingRef *sbsref, SubscriptingRefState *sbsrefstate, SubscriptExecSteps *methods)
static void hstore_subscript_assign(ExprState *state, ExprEvalStep *op, ExprContext *econtext)
PG_FUNCTION_INFO_V1(hstore_subscript_handler)
static void hstore_subscript_fetch(ExprState *state, ExprEvalStep *op, ExprContext *econtext)
Oid exprType(const Node *expr)
int exprLocation(const Node *expr)
Node * coerce_to_target_type(ParseState *pstate, Node *expr, Oid exprtype, Oid targettype, int32 targettypmod, CoercionContext ccontext, CoercionForm cformat, int location)
Node * transformExpr(ParseState *pstate, Node *expr, ParseExprKind exprKind)
int parser_errposition(ParseState *pstate, int location)
static int list_length(const List *l)
#define linitial_node(type, l)
static Datum PointerGetDatum(const void *X)
union ExprEvalStep::@55 d
struct ExprEvalStep::@55::@83 sbsref
ParseExprKind p_expr_kind
ExecEvalSubroutine sbs_fetch_old
ExecEvalBoolSubroutine sbs_check_subscripts
ExecEvalSubroutine sbs_assign
ExecEvalSubroutine sbs_fetch
SubscriptTransform transform
#define SET_VARSIZE(PTR, len)
#define VARSIZE_ANY_EXHDR(PTR)
text * cstring_to_text_with_len(const char *s, int len)