1239 {
1241 uint32_t len = 0;
1242
1243 char *_tmp = NULL;
1244
1245 char *_ovschema = NULL;
1246 char *_ovtable = NULL;
1247 char *_ovcolumn = NULL;
1248
1249 char *_schema = NULL;
1250 char *_table = NULL;
1251 char *_column = NULL;
1252
1253 assert(ovtable != NULL);
1254 assert(ovcolumn != NULL);
1255 assert(table != NULL);
1256 assert(column != NULL);
1258
1259
1260 if (ovschema != NULL) {
1264 _tmp =
strreplace(_ovschema,
"'",
"''", NULL);
1266 _ovschema = _tmp;
1267 }
1268
1269
1271 _ovtable =
strreplace(_tmp,
"'",
"''", NULL);
1273
1274
1276 _ovcolumn =
strreplace(_tmp,
"'",
"''", NULL);
1278
1279
1280 if (schema != NULL) {
1286 _schema = _tmp;
1287 }
1288
1289
1293
1294
1298
1299 len = strlen("SELECT AddOverviewConstraints('','','','','','',);") + 5;
1300 if (_ovschema != NULL)
1301 len += strlen(_ovschema);
1302 len += strlen(_ovtable);
1303 len += strlen(_ovcolumn);
1304 if (_schema != NULL)
1305 len += strlen(_schema);
1306 len += strlen(_table);
1307 len += strlen(_column);
1308
1310 if (sql == NULL) {
1311 rterror(
_(
"add_overview_constraints: Could not allocate memory for AddOverviewConstraints statement"));
1312 return 0;
1313 }
1314 sprintf(sql, "SELECT AddOverviewConstraints('%s','%s','%s','%s','%s','%s',%d);",
1315 (_ovschema != NULL ? _ovschema : ""),
1316 _ovtable,
1317 _ovcolumn,
1318 (_schema != NULL ? _schema : ""),
1319 _table,
1320 _column,
1321 factor
1322 );
1323
1324 if (_ovschema != NULL)
1328
1329 if (_schema != NULL)
1333
1335
1336 return 1;
1337}
void rterror(const char *fmt,...) __attribute__((format(printf
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)