Assert(PQntuples(remstats->att) >= 1);
attimport_plan = SPI_prepare(attimport_sql, ATTIMPORT_SQL_NUM_FIELDS,
- (Oid *) attimport_argtypes);
+ attimport_argtypes);
if (attimport_plan == NULL)
elog(ERROR, "failed to prepare attimport_sql query");
attclear_plan = SPI_prepare(attclear_sql, ATTCLEAR_SQL_NUM_FIELDS,
- (Oid *) attclear_argtypes);
+ attclear_argtypes);
if (attclear_plan == NULL)
elog(ERROR, "failed to prepare attclear_sql query");
spirc = SPI_execute_with_args(relimport_sql,
RELIMPORT_SQL_NUM_FIELDS,
- (Oid *) relimport_argtypes,
+ relimport_argtypes,
values, nulls, false, 1);
if (spirc != SPI_OK_SELECT)
elog(ERROR, "failed to execute relimport_sql query for foreign table \"%s.%s\"",
<refsynopsisdiv>
<synopsis>
int SPI_execute_with_args(const char *<parameter>command</parameter>,
- int <parameter>nargs</parameter>, Oid *<parameter>argtypes</parameter>,
+ int <parameter>nargs</parameter>, const Oid *<parameter>argtypes</parameter>,
const Datum *<parameter>values</parameter>, const char *<parameter>nulls</parameter>,
bool <parameter>read_only</parameter>, long <parameter>count</parameter>)
</synopsis>
<refsynopsisdiv>
<synopsis>
-SPIPlanPtr SPI_prepare(const char * <parameter>command</parameter>, int <parameter>nargs</parameter>, Oid * <parameter>argtypes</parameter>)
+SPIPlanPtr SPI_prepare(const char * <parameter>command</parameter>, int <parameter>nargs</parameter>, const Oid * <parameter>argtypes</parameter>)
</synopsis>
</refsynopsisdiv>
<refsynopsisdiv>
<synopsis>
SPIPlanPtr SPI_prepare_cursor(const char * <parameter>command</parameter>, int <parameter>nargs</parameter>,
- Oid * <parameter>argtypes</parameter>, int <parameter>cursorOptions</parameter>)
+ const Oid * <parameter>argtypes</parameter>, int <parameter>cursorOptions</parameter>)
</synopsis>
</refsynopsisdiv>
<synopsis>
Portal SPI_cursor_open_with_args(const char *<parameter>name</parameter>,
const char *<parameter>command</parameter>,
- int <parameter>nargs</parameter>, Oid *<parameter>argtypes</parameter>,
+ int <parameter>nargs</parameter>, const Oid *<parameter>argtypes</parameter>,
const Datum *<parameter>values</parameter>, const char *<parameter>nulls</parameter>,
bool <parameter>read_only</parameter>, int <parameter>cursorOptions</parameter>)
</synopsis>
<refsynopsisdiv>
<synopsis>
HeapTuple SPI_modifytuple(Relation <parameter>rel</parameter>, HeapTuple <parameter>row</parameter>, int <parameter>ncols</parameter>,
- int * <parameter>colnum</parameter>, const Datum * <parameter>values</parameter>, const char * <parameter>nulls</parameter>)
+ const int * <parameter>colnum</parameter>, const Datum * <parameter>values</parameter>, const char * <parameter>nulls</parameter>)
</synopsis>
</refsynopsisdiv>
Snapshot snapshot, Snapshot crosscheck_snapshot,
bool fire_triggers);
-static ParamListInfo _SPI_convert_params(int nargs, Oid *argtypes,
+static ParamListInfo _SPI_convert_params(int nargs, const Oid *argtypes,
const Datum *Values, const char *Nulls);
static int _SPI_pquery(QueryDesc *queryDesc, bool fire_triggers, uint64 tcount);
*/
int
SPI_execute_with_args(const char *src,
- int nargs, Oid *argtypes,
+ int nargs, const Oid *argtypes,
const Datum *Values, const char *Nulls,
bool read_only, long tcount)
{
}
SPIPlanPtr
-SPI_prepare(const char *src, int nargs, Oid *argtypes)
+SPI_prepare(const char *src, int nargs, const Oid *argtypes)
{
return SPI_prepare_cursor(src, nargs, argtypes, 0);
}
SPIPlanPtr
-SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes,
+SPI_prepare_cursor(const char *src, int nargs, const Oid *argtypes,
int cursorOptions)
{
_SPI_plan plan;
}
HeapTuple
-SPI_modifytuple(Relation rel, HeapTuple tuple, int natts, int *attnum,
+SPI_modifytuple(Relation rel, HeapTuple tuple, int natts, const int *attnum,
const Datum *Values, const char *Nulls)
{
MemoryContext oldcxt;
Portal
SPI_cursor_open_with_args(const char *name,
const char *src,
- int nargs, Oid *argtypes,
+ int nargs, const Oid *argtypes,
const Datum *Values, const char *Nulls,
bool read_only, int cursorOptions)
{
* Convert arrays of query parameters to form wanted by planner and executor
*/
static ParamListInfo
-_SPI_convert_params(int nargs, Oid *argtypes,
+_SPI_convert_params(int nargs, const Oid *argtypes,
const Datum *Values, const char *Nulls)
{
ParamListInfo paramLI;
newplan->nargs = plan->nargs;
if (plan->nargs > 0)
{
- newplan->argtypes = palloc_array(Oid, plan->nargs);
- memcpy(newplan->argtypes, plan->argtypes, plan->nargs * sizeof(Oid));
+ Oid *newplan_argtypes;
+
+ newplan_argtypes = palloc_array(Oid, plan->nargs);
+ memcpy(newplan_argtypes, plan->argtypes, plan->nargs * sizeof(Oid));
+ newplan->argtypes = newplan_argtypes;
}
else
newplan->argtypes = NULL;
newplan->nargs = plan->nargs;
if (plan->nargs > 0)
{
- newplan->argtypes = palloc_array(Oid, plan->nargs);
- memcpy(newplan->argtypes, plan->argtypes, plan->nargs * sizeof(Oid));
+ Oid *newplan_argtypes;
+
+ newplan_argtypes = palloc_array(Oid, plan->nargs);
+ memcpy(newplan_argtypes, plan->argtypes, plan->nargs * sizeof(Oid));
+ newplan->argtypes = newplan_argtypes;
}
else
newplan->argtypes = NULL;
Relation trig_rel, bool rel_is_pk);
static RI_ConstraintInfo *ri_LoadConstraintInfo(Oid constraintOid);
static Oid get_ri_constraint_root(Oid constrOid);
-static SPIPlanPtr ri_PlanCheck(const char *querystr, int nargs, Oid *argtypes,
+static SPIPlanPtr ri_PlanCheck(const char *querystr, int nargs, const Oid *argtypes,
RI_QueryKey *qkey, Relation fk_rel, Relation pk_rel);
static bool ri_PerformCheck(const RI_ConstraintInfo *riinfo,
RI_QueryKey *qkey, SPIPlanPtr qplan,
* Prepare execution plan for a query to enforce an RI restriction
*/
static SPIPlanPtr
-ri_PlanCheck(const char *querystr, int nargs, Oid *argtypes,
+ri_PlanCheck(const char *querystr, int nargs, const Oid *argtypes,
RI_QueryKey *qkey, Relation fk_rel, Relation pk_rel)
{
SPIPlanPtr qplan;
CompleteCachedPlan(CachedPlanSource *plansource,
List *querytree_list,
MemoryContext querytree_context,
- Oid *param_types,
+ const Oid *param_types,
int num_params,
ParserSetupHook parserSetup,
void *parserSetupArg,
Snapshot crosscheck_snapshot,
bool read_only, bool fire_triggers, long tcount);
extern int SPI_execute_with_args(const char *src,
- int nargs, Oid *argtypes,
+ int nargs, const Oid *argtypes,
const Datum *Values, const char *Nulls,
bool read_only, long tcount);
-extern SPIPlanPtr SPI_prepare(const char *src, int nargs, Oid *argtypes);
-extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes,
+extern SPIPlanPtr SPI_prepare(const char *src, int nargs, const Oid *argtypes);
+extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, const Oid *argtypes,
int cursorOptions);
extern SPIPlanPtr SPI_prepare_extended(const char *src,
const SPIPrepareOptions *options);
extern HeapTuple SPI_copytuple(HeapTuple tuple);
extern HeapTupleHeader SPI_returntuple(HeapTuple tuple, TupleDesc tupdesc);
extern HeapTuple SPI_modifytuple(Relation rel, HeapTuple tuple, int natts,
- int *attnum, const Datum *Values, const char *Nulls);
+ const int *attnum, const Datum *Values, const char *Nulls);
extern int SPI_fnumber(TupleDesc tupdesc, const char *fname);
extern char *SPI_fname(TupleDesc tupdesc, int fnumber);
extern char *SPI_getvalue(HeapTuple tuple, TupleDesc tupdesc, int fnumber);
const Datum *Values, const char *Nulls, bool read_only);
extern Portal SPI_cursor_open_with_args(const char *name,
const char *src,
- int nargs, Oid *argtypes,
+ int nargs, const Oid *argtypes,
const Datum *Values, const char *Nulls,
bool read_only, int cursorOptions);
extern Portal SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr plan,
RawParseMode parse_mode; /* raw_parser() mode */
int cursor_options; /* Cursor options used for planning */
int nargs; /* number of plan arguments */
- Oid *argtypes; /* Argument types (NULL if nargs is 0) */
+ const Oid *argtypes; /* Argument types (NULL if nargs is 0) */
ParserSetupHook parserSetup; /* alternative parameter spec method */
void *parserSetupArg;
} _SPI_plan;
extern void CompleteCachedPlan(CachedPlanSource *plansource,
List *querytree_list,
MemoryContext querytree_context,
- Oid *param_types,
+ const Oid *param_types,
int num_params,
ParserSetupHook parserSetup,
void *parserSetupArg,