/*
* quote_object_name
*
- * It tries to quote the supplied identifiers
+ * Concatenate as many of the given strings as aren't NULL, with dots between.
+ * Quote any of the strings that wouldn't be valid identifiers otherwise.
*/
static char *
quote_object_name(const char *src1, const char *src2,
const char *src3, const char *src4)
{
StringInfoData result;
- const char *temp;
initStringInfo(&result);
-
if (src1)
- {
- temp = quote_identifier(src1);
- appendStringInfoString(&result, temp);
- if (src1 != temp)
- pfree(temp);
- }
+ appendStringInfoString(&result, quote_identifier(src1));
if (src2)
- {
- temp = quote_identifier(src2);
- appendStringInfo(&result, ".%s", temp);
- if (src2 != temp)
- pfree(temp);
- }
+ appendStringInfo(&result, ".%s", quote_identifier(src2));
if (src3)
- {
- temp = quote_identifier(src3);
- appendStringInfo(&result, ".%s", temp);
- if (src3 != temp)
- pfree(temp);
- }
+ appendStringInfo(&result, ".%s", quote_identifier(src3));
if (src4)
- {
- temp = quote_identifier(src4);
- appendStringInfo(&result, ".%s", temp);
- if (src4 != temp)
- pfree(temp);
- }
+ appendStringInfo(&result, ".%s", quote_identifier(src4));
return result.data;
}