|
|
@ -6,7 +6,7 @@ |
|
|
|
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc |
|
|
|
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc |
|
|
|
* Portions Copyright (c) 1994, Regents of the University of California |
|
|
|
* Portions Copyright (c) 1994, Regents of the University of California |
|
|
|
* |
|
|
|
* |
|
|
|
* $Id: analyze.c,v 1.154 2000/08/11 23:45:27 tgl Exp $ |
|
|
|
* $Id: analyze.c,v 1.155 2000/08/22 12:59:04 ishii Exp $ |
|
|
|
* |
|
|
|
* |
|
|
|
*------------------------------------------------------------------------- |
|
|
|
*------------------------------------------------------------------------- |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -30,6 +30,10 @@ |
|
|
|
#include "utils/relcache.h" |
|
|
|
#include "utils/relcache.h" |
|
|
|
#include "utils/syscache.h" |
|
|
|
#include "utils/syscache.h" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef MULTIBYTE |
|
|
|
|
|
|
|
#include "mb/pg_wchar.h" |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
void CheckSelectForUpdate(Query *qry); /* no points for style... */ |
|
|
|
void CheckSelectForUpdate(Query *qry); /* no points for style... */ |
|
|
|
|
|
|
|
|
|
|
|
static Query *transformStmt(ParseState *pstate, Node *stmt); |
|
|
|
static Query *transformStmt(ParseState *pstate, Node *stmt); |
|
|
@ -550,6 +554,13 @@ makeObjectName(char *name1, char *name2, char *typename) |
|
|
|
name2chars--; |
|
|
|
name2chars--; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef MULTIBYTE |
|
|
|
|
|
|
|
if (name1) |
|
|
|
|
|
|
|
name1chars = pg_mbcliplen(name1, name1chars, name1chars); |
|
|
|
|
|
|
|
if (name2) |
|
|
|
|
|
|
|
name2chars = pg_mbcliplen(name2, name2chars, name2chars); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
/* Now construct the string using the chosen lengths */ |
|
|
|
/* Now construct the string using the chosen lengths */ |
|
|
|
name = palloc(name1chars + name2chars + overhead + 1); |
|
|
|
name = palloc(name1chars + name2chars + overhead + 1); |
|
|
|
strncpy(name, name1, name1chars); |
|
|
|
strncpy(name, name1, name1chars); |
|
|
|