mirror of
https://github.com/postgres/postgres.git
synced 2025-05-06 19:59:18 +03:00
This is somewhat cosmetic, since as long as you know what you are looking at, "10.0" is a serviceable substitute for "10". But there is a potential for confusion between version numbers with minor numbers and those without --- we don't want people asking "why is psql saying 10.0 when my server is 10.2". Therefore, back-patch as far as practical, which turns out to be 9.3. I could have redone the patch to use fprintf(stderr) in place of psql_error(), but it seems more work than is warranted for branches that will be EOL or nearly so by the time v10 comes out. Although only psql seems to contain any code that needs this, I chose to put the support function into fe_utils, since it seems likely we'll need it in other client programs in future. (In 9.3-9.5, use dumputils.c, the predecessor of fe_utils/string_utils.c.) In HEAD, also fix the backend code that whines about loadable-library version mismatch. I don't see much need to back-patch that.
62 lines
2.1 KiB
C
62 lines
2.1 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* String-processing utility routines for frontend code
|
|
*
|
|
* Utility functions that interpret backend output or quote strings for
|
|
* assorted contexts.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/fe_utils/string_utils.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef STRING_UTILS_H
|
|
#define STRING_UTILS_H
|
|
|
|
#include "libpq-fe.h"
|
|
#include "pqexpbuffer.h"
|
|
|
|
#define atooid(x) ((Oid) strtoul((x), NULL, 10))
|
|
|
|
/* Global variables controlling behavior of fmtId() and fmtQualifiedId() */
|
|
extern int quote_all_identifiers;
|
|
extern PQExpBuffer (*getLocalPQExpBuffer) (void);
|
|
|
|
/* Functions */
|
|
extern const char *fmtId(const char *identifier);
|
|
extern const char *fmtQualifiedId(int remoteVersion,
|
|
const char *schema, const char *id);
|
|
|
|
extern char *formatPGVersionNumber(int version_number, bool include_minor,
|
|
char *buf, size_t buflen);
|
|
|
|
extern void appendStringLiteral(PQExpBuffer buf, const char *str,
|
|
int encoding, bool std_strings);
|
|
extern void appendStringLiteralConn(PQExpBuffer buf, const char *str,
|
|
PGconn *conn);
|
|
extern void appendStringLiteralDQ(PQExpBuffer buf, const char *str,
|
|
const char *dqprefix);
|
|
extern void appendByteaLiteral(PQExpBuffer buf,
|
|
const unsigned char *str, size_t length,
|
|
bool std_strings);
|
|
|
|
extern void appendShellString(PQExpBuffer buf, const char *str);
|
|
extern void appendConnStrVal(PQExpBuffer buf, const char *str);
|
|
extern void appendPsqlMetaConnect(PQExpBuffer buf, const char *dbname);
|
|
|
|
extern bool parsePGArray(const char *atext, char ***itemarray, int *nitems);
|
|
|
|
extern bool appendReloptionsArray(PQExpBuffer buffer, const char *reloptions,
|
|
const char *prefix, int encoding, bool std_strings);
|
|
|
|
extern bool processSQLNamePattern(PGconn *conn, PQExpBuffer buf,
|
|
const char *pattern,
|
|
bool have_where, bool force_escape,
|
|
const char *schemavar, const char *namevar,
|
|
const char *altnamevar, const char *visibilityrule);
|
|
|
|
#endif /* STRING_UTILS_H */
|