Fix portability issue in pg_audit.

"%ld" is not a portable way to print int64's.  This may explain the
buildfarm crashes we're seeing --- it seems to make dromedary happy,
at least.
This commit is contained in:
Tom Lane 2015-05-14 13:19:26 -04:00
parent 6c9e93d3ff
commit 35a1e1d159
1 changed files with 19 additions and 14 deletions

View File

@ -384,8 +384,8 @@ stack_pop(int64 stackId)
if (auditEventStack != NULL && auditEventStack->stackId == stackId) if (auditEventStack != NULL && auditEventStack->stackId == stackId)
MemoryContextDelete(auditEventStack->contextAudit); MemoryContextDelete(auditEventStack->contextAudit);
else else
elog(ERROR, "pg_audit stack item %ld not found on top - cannot pop", elog(ERROR, "pg_audit stack item " INT64_FORMAT " not found on top - cannot pop",
stackId); stackId);
} }
/* /*
@ -403,10 +403,9 @@ stack_valid(int64 stackId)
/* If we didn't find it, something went wrong. */ /* If we didn't find it, something went wrong. */
if (nextItem == NULL) if (nextItem == NULL)
elog(ERROR, "pg_audit stack item %ld not found - top of stack is %ld", elog(ERROR, "pg_audit stack item " INT64_FORMAT " not found - top of stack is " INT64_FORMAT "",
stackId, auditEventStack == NULL ? -1 : auditEventStack->stackId); stackId,
auditEventStack == NULL ? (int64) -1 : auditEventStack->stackId);
return;
} }
/* /*
@ -672,15 +671,21 @@ log_audit_event(AuditEventStackItem *stackItem)
appendStringInfoString(&auditStr, appendStringInfoString(&auditStr,
"<previously logged>,<previously logged>"); "<previously logged>,<previously logged>");
/* Log the audit entry */ /*
elog(auditLogLevel, "AUDIT: %s,%ld,%ld,%s,%s", * Log the audit entry. Note: use of INT64_FORMAT here is bad for
stackItem->auditEvent.granted ? * translatability, but we currently haven't got translation support in
AUDIT_TYPE_OBJECT : AUDIT_TYPE_SESSION, * pg_audit anyway.
stackItem->auditEvent.statementId, */
stackItem->auditEvent.substatementId, ereport(auditLogLevel,
className, auditStr.data); (errmsg("AUDIT: %s," INT64_FORMAT "," INT64_FORMAT ",%s,%s",
stackItem->auditEvent.granted ?
AUDIT_TYPE_OBJECT : AUDIT_TYPE_SESSION,
stackItem->auditEvent.statementId,
stackItem->auditEvent.substatementId,
className,
auditStr.data)));
stackItem->auditEvent.logged = true; stackItem->auditEvent.logged = true;
MemoryContextSwitchTo(contextOld); MemoryContextSwitchTo(contextOld);
} }