*/
resetStringInfo(&querybuf);
appendStringInfo(&querybuf,
- "SELECT newdata FROM %s newdata "
- "WHERE newdata IS NOT NULL AND EXISTS "
- "(SELECT 1 FROM %s newdata2 WHERE newdata2 IS NOT NULL "
- "AND newdata2 OPERATOR(pg_catalog.*=) newdata "
- "AND newdata2.ctid OPERATOR(pg_catalog.<>) "
- "newdata.ctid)",
+ "SELECT _$newdata FROM %s _$newdata "
+ "WHERE _$newdata IS NOT NULL AND EXISTS "
+ "(SELECT 1 FROM %s _$newdata2 WHERE _$newdata2 IS NOT NULL "
+ "AND _$newdata2 OPERATOR(pg_catalog.*=) _$newdata "
+ "AND _$newdata2.ctid OPERATOR(pg_catalog.<>) "
+ "_$newdata.ctid)",
tempname, tempname);
if (SPI_execute(querybuf.data, false, 1) != SPI_OK_SELECT)
elog(ERROR, "SPI_exec failed: %s", querybuf.data);
resetStringInfo(&querybuf);
appendStringInfo(&querybuf,
"CREATE TEMP TABLE %s AS "
- "SELECT mv.ctid AS tid, newdata "
- "FROM %s mv FULL JOIN %s newdata ON (",
+ "SELECT _$mv.ctid AS tid, _$newdata "
+ "FROM %s _$mv FULL JOIN %s _$newdata ON (",
diffname, matviewname, tempname);
/*
if (foundUniqueIndex)
appendStringInfoString(&querybuf, " AND ");
- leftop = quote_qualified_identifier("newdata",
+ leftop = quote_qualified_identifier("_$newdata",
NameStr(attr->attname));
- rightop = quote_qualified_identifier("mv",
+ rightop = quote_qualified_identifier("_$mv",
NameStr(attr->attname));
generate_operator_clause(&querybuf,
Assert(foundUniqueIndex);
appendStringInfoString(&querybuf,
- " AND newdata OPERATOR(pg_catalog.*=) mv) "
- "WHERE newdata IS NULL OR mv IS NULL "
+ " AND _$newdata OPERATOR(pg_catalog.*=) _$mv) "
+ "WHERE _$newdata IS NULL OR _$mv IS NULL "
"ORDER BY tid");
/* Create the temporary "diff" table. */
/* Deletes must come before inserts; do them first. */
resetStringInfo(&querybuf);
appendStringInfo(&querybuf,
- "DELETE FROM %s mv WHERE ctid OPERATOR(pg_catalog.=) ANY "
- "(SELECT diff.tid FROM %s diff "
- "WHERE diff.tid IS NOT NULL "
- "AND diff.newdata IS NULL)",
+ "DELETE FROM %s _$mv WHERE ctid OPERATOR(pg_catalog.=) ANY "
+ "(SELECT _$diff.tid FROM %s _$diff "
+ "WHERE _$diff.tid IS NOT NULL "
+ "AND _$diff._$newdata IS NULL)",
matviewname, diffname);
if (SPI_exec(querybuf.data, 0) != SPI_OK_DELETE)
elog(ERROR, "SPI_exec failed: %s", querybuf.data);
/* Inserts go last. */
resetStringInfo(&querybuf);
appendStringInfo(&querybuf,
- "INSERT INTO %s SELECT (diff.newdata).* "
- "FROM %s diff WHERE tid IS NULL",
+ "INSERT INTO %s SELECT (_$diff._$newdata).* "
+ "FROM %s _$diff WHERE tid IS NULL",
matviewname, diffname);
if (SPI_exec(querybuf.data, 0) != SPI_OK_INSERT)
elog(ERROR, "SPI_exec failed: %s", querybuf.data);