1227 {
1229 uint32_t len = 0;
1230
1231 char *_tmp = NULL;
1232
1233 char *_ovschema = NULL;
1234 char *_ovtable = NULL;
1235 char *_ovcolumn = NULL;
1236
1237 char *_schema = NULL;
1238 char *_table = NULL;
1239 char *_column = NULL;
1240
1241 assert(ovtable != NULL);
1242 assert(ovcolumn != NULL);
1243 assert(table != NULL);
1244 assert(column != NULL);
1246
1247
1248 if (ovschema != NULL) {
1252 _tmp =
strreplace(_ovschema,
"'",
"''", NULL);
1254 _ovschema = _tmp;
1255 }
1256
1257
1259 _ovtable =
strreplace(_tmp,
"'",
"''", NULL);
1261
1262
1264 _ovcolumn =
strreplace(_tmp,
"'",
"''", NULL);
1266
1267
1268 if (schema != NULL) {
1274 _schema = _tmp;
1275 }
1276
1277
1281
1282
1286
1287 len = strlen("SELECT AddOverviewConstraints('','','','','','',);") + 5;
1288 if (_ovschema != NULL)
1289 len += strlen(_ovschema);
1290 len += strlen(_ovtable);
1291 len += strlen(_ovcolumn);
1292 if (_schema != NULL)
1293 len += strlen(_schema);
1294 len += strlen(_table);
1295 len += strlen(_column);
1296
1298 if (sql == NULL) {
1299 rterror(
_(
"add_overview_constraints: Could not allocate memory for AddOverviewConstraints statement"));
1300 return 0;
1301 }
1302 sprintf(sql, "SELECT AddOverviewConstraints('%s','%s','%s','%s','%s','%s',%d);",
1303 (_ovschema != NULL ? _ovschema : ""),
1304 _ovtable,
1305 _ovcolumn,
1306 (_schema != NULL ? _schema : ""),
1307 _table,
1308 _column,
1309 factor
1310 );
1311
1312 if (_ovschema != NULL)
1316
1317 if (_schema != NULL)
1321
1323
1324 return 1;
1325}
void rterror(const char *fmt,...)
Wrappers used for reporting errors and info.
void * rtalloc(size_t size)
Wrappers used for managing memory.
void rtdealloc(void *mem)
Datum buffer(PG_FUNCTION_ARGS)
static int append_sql_to_buffer(STRINGBUFFER *buffer, const char *str)
static char * strreplace(const char *str, const char *oldstr, const char *newstr, int *count)
static char * chartrim(const char *input, char *remove)