aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/copy.c4
-rw-r--r--src/backend/libpq/be-fsstubs.c12
-rw-r--r--src/backend/parser/Makefile6
-rw-r--r--src/backend/parser/gram.y8
-rw-r--r--src/backend/parser/scan.l7
-rw-r--r--src/backend/port/hpux/fixade.h6
-rw-r--r--src/backend/tcop/postgres.c8
-rw-r--r--src/backend/utils/adt/arrayfuncs.c156
-rw-r--r--src/backend/utils/adt/ruleutils.c27
-rw-r--r--src/backend/utils/adt/varchar.c24
-rw-r--r--src/bin/psql/psql.c4
-rw-r--r--src/include/catalog/pg_proc.h7
-rw-r--r--src/include/catalog/pg_type.h4
-rw-r--r--src/include/libpq/pqcomm.h7
-rw-r--r--src/include/miscadmin.h5
-rw-r--r--src/include/postgres.h3
-rw-r--r--src/include/utils/array.h6
-rw-r--r--src/include/utils/builtins.h5
-rw-r--r--src/interfaces/ecpg/preproc/Makefile4
-rw-r--r--src/interfaces/ecpg/preproc/pgc.l5
-rw-r--r--src/interfaces/libpq/fe-connect.c6
-rw-r--r--src/interfaces/libpq/fe-print.c4
-rw-r--r--src/interfaces/libpq/libpq-int.h4
-rw-r--r--src/interfaces/odbc/info.c6
-rw-r--r--src/interfaces/odbc/psqlodbc.h3
-rw-r--r--src/interfaces/python/pgmodule.c2
-rw-r--r--src/test/regress/regress.c6
27 files changed, 273 insertions, 66 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index 4efa13635aa..dd280918165 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -6,7 +6,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.74 1999/04/25 03:19:09 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.75 1999/05/03 19:09:38 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1061,7 +1061,7 @@ GetIndexRelations(Oid main_relation_oid,
}
}
-#define EXT_ATTLEN 5*8192
+#define EXT_ATTLEN 5*BLCKSZ
/*
returns 1 is c is in s
diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c
index 66320cd54d2..46c75f932e5 100644
--- a/src/backend/libpq/be-fsstubs.c
+++ b/src/backend/libpq/be-fsstubs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.28 1999/02/13 23:15:41 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.29 1999/05/03 19:09:39 momjian Exp $
*
* NOTES
* This should be moved to a more appropriate place. It is here
@@ -44,7 +44,9 @@
/* [PA] is Pascal André <andre@via.ecp.fr> */
/*#define FSDB 1*/
-#define MAX_LOBJ_FDS 256
+#define MAX_LOBJ_FDS 256
+#define BUFSIZE 1024
+#define FNAME_BUFSIZE 8192
static LargeObjectDesc *cookies[MAX_LOBJ_FDS];
@@ -257,9 +259,8 @@ lo_import(text *filename)
int nbytes,
tmp;
-#define BUFSIZE 1024
char buf[BUFSIZE];
- char fnamebuf[8192];
+ char fnamebuf[FNAME_BUFSIZE];
LargeObjectDesc *lobj;
Oid lobjOid;
@@ -324,9 +325,8 @@ lo_export(Oid lobjId, text *filename)
int nbytes,
tmp;
-#define BUFSIZE 1024
char buf[BUFSIZE];
- char fnamebuf[8192];
+ char fnamebuf[FNAME_BUFSIZE];
LargeObjectDesc *lobj;
mode_t oumask;
diff --git a/src/backend/parser/Makefile b/src/backend/parser/Makefile
index 8fb817c91ff..b9e955e8523 100644
--- a/src/backend/parser/Makefile
+++ b/src/backend/parser/Makefile
@@ -4,7 +4,7 @@
# Makefile for parser
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/backend/parser/Makefile,v 1.19 1998/07/26 04:30:30 scrappy Exp $
+# $Header: /cvsroot/pgsql/src/backend/parser/Makefile,v 1.20 1999/05/03 19:09:40 momjian Exp $
#
#-------------------------------------------------------------------------
@@ -37,7 +37,9 @@ gram.c parse.h: gram.y
scan.c: scan.l
$(LEX) $<
- mv lex.yy.c scan.c
+ sed -e 's/#define YY_BUF_SIZE .*/#define YY_BUF_SIZE 65536/' \
+ <lex.yy.c >scan.c
+ rm -f lex.yy.c
# The following dependencies on parse.h are computed by
# make depend, but we state them here explicitly anyway because
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 86f737179a3..b3836e0191d 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.71 1999/04/27 13:33:43 wieck Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.72 1999/05/03 19:09:41 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -3290,7 +3290,6 @@ Typename: Array opt_array_bounds
else
$$->setof = FALSE;
}
- | Character
| SETOF Array
{
$$ = $2;
@@ -3301,6 +3300,7 @@ Typename: Array opt_array_bounds
Array: Generic
| Datetime
| Numeric
+ | Character
;
Generic: generic
@@ -3425,10 +3425,6 @@ opt_decimal: '(' Iconst ',' Iconst ')'
/* SQL92 character data types
* The following implements CHAR() and VARCHAR().
- * We do it here instead of the 'Generic' production
- * because we don't want to allow arrays of VARCHAR().
- * I haven't thought about whether that will work or not.
- * - ay 6/95
*/
Character: character '(' Iconst ')'
{
diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l
index f87a124f092..d50ee9c62d8 100644
--- a/src/backend/parser/scan.l
+++ b/src/backend/parser/scan.l
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.47 1999/03/17 20:17:13 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.48 1999/05/03 19:09:42 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -32,6 +32,11 @@
#include "parse.h"
#include "utils/builtins.h"
+#ifdef YY_READ_BUF_SIZE
+#undef YY_READ_BUF_SIZE
+#endif
+#define YY_READ_BUF_SIZE MAX_PARSE_BUFFER
+
extern char *parseString;
static char *parseCh;
diff --git a/src/backend/port/hpux/fixade.h b/src/backend/port/hpux/fixade.h
index 8a96ad7cf29..d76c8c256e0 100644
--- a/src/backend/port/hpux/fixade.h
+++ b/src/backend/port/hpux/fixade.h
@@ -7,7 +7,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: fixade.h,v 1.5 1999/02/13 23:17:33 momjian Exp $
+ * $Id: fixade.h,v 1.6 1999/05/03 19:09:44 momjian Exp $
*
* NOTES
* This must be included in EVERY source file.
@@ -47,11 +47,11 @@
*/
struct HP_WAY_BOGUS
{
- char hpwb_bogus[8192];
+ char hpwb_bogus[8191+1];
};
struct HP_TOO_BOGUS
{
- int hptb_bogus[8192];
+ int hptb_bogus[8191+1];
};
#endif /* BROKEN_STRUCT_INIT */
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 7e596fcc480..f196e51eaf0 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.109 1999/05/01 17:16:25 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.110 1999/05/03 19:09:54 momjian Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@@ -452,14 +452,14 @@ pg_parse_and_plan(char *query_string, /* string to execute */
else
{
/* Print condensed query string to fit in one log line */
- char buff[8192 + 1];
+ char buff[MAX_QUERY_SIZE + 1];
char c,
*s,
*d;
int n,
is_space = 1;
- for (s = query_string, d = buff, n = 0; (c = *s) && (n < 8192); s++)
+ for (s = query_string, d = buff, n = 0; (c = *s) && (n < MAX_QUERY_SIZE); s++)
{
switch (c)
{
@@ -1539,7 +1539,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface ");
- puts("$Revision: 1.109 $ $Date: 1999/05/01 17:16:25 $\n");
+ puts("$Revision: 1.110 $ $Date: 1999/05/03 19:09:54 $\n");
}
/* ----------------
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index a4f1842e5f9..f8fe7e42229 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.38 1999/02/13 23:19:00 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.39 1999/05/03 19:09:59 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -15,6 +15,7 @@
#include <ctype.h>
#include <stdio.h>
#include <string.h>
+#include <stdarg.h>
#include "postgres.h"
@@ -26,6 +27,7 @@
#include "storage/fd.h"
#include "fmgr.h"
#include "utils/array.h"
+#include "utils/elog.h"
#include "libpq/libpq-fs.h"
#include "libpq/be-fsstubs.h"
@@ -614,7 +616,9 @@ array_out(ArrayType *v, Oid element_type)
i,
j,
k,
+#ifndef TCL_ARRAYS
l,
+#endif
indx[MAXDIM];
bool dummy_bool;
int ndim,
@@ -1274,6 +1278,156 @@ array_assgn(ArrayType *array,
return (char *) array;
}
+/*
+ * array_map()
+ *
+ * Map an arbitrary function to an array and return a new array with
+ * same dimensions and the source elements transformed by fn().
+ */
+ArrayType *
+array_map(ArrayType *v,
+ Oid type,
+ char *(fn)(char *p, ...),
+ Oid retType,
+ int nargs,
+ ...)
+{
+ ArrayType *result;
+ void *args[4];
+ char **values;
+ char *elt;
+ int *dim;
+ int ndim;
+ int nitems;
+ int i;
+ int nbytes = 0;
+ int inp_typlen;
+ bool inp_typbyval;
+ int typlen;
+ bool typbyval;
+ char typdelim;
+ Oid typelem;
+ Oid proc;
+ char typalign;
+ char *s;
+ char *p;
+ va_list ap;
+
+ /* Large objects not yet supported */
+ if (ARR_IS_LO(v) == true) {
+ elog(ERROR, "array_map: large objects not supported");
+ }
+
+ /* Check nargs */
+ if ((nargs < 0) || (nargs > 4)) {
+ elog(ERROR, "array_map: invalid nargs: %d", nargs);
+ }
+
+ /* Copy extra args to local variable */
+ va_start(ap, nargs);
+ for (i=0; i<nargs; i++) {
+ args[i] = (void *) va_arg(ap, char *);
+ }
+ va_end(ap);
+
+ /* Lookup source and result types. Unneeded variables are reused. */
+ system_cache_lookup(type, false, &inp_typlen, &inp_typbyval,
+ &typdelim, &typelem, &proc, &typalign);
+ system_cache_lookup(retType, false, &typlen, &typbyval,
+ &typdelim, &typelem, &proc, &typalign);
+
+ /* Allocate temporary array for new values */
+ ndim = ARR_NDIM(v);
+ dim = ARR_DIMS(v);
+ nitems = getNitems(ndim, dim);
+ values = (char **) palloc(nitems * sizeof(char *));
+ MemSet(values, 0, nitems * sizeof(char *));
+
+ /* Loop over source data */
+ s = (char *) ARR_DATA_PTR(v);
+ for (i=0; i<nitems; i++) {
+ /* Get source element */
+ if (inp_typbyval) {
+ switch (inp_typlen) {
+ case 1:
+ elt = (char *) ((int) (*(char *) s));
+ break;
+ case 2:
+ elt = (char *) ((int) (*(int16 *) s));
+ break;
+ case 3:
+ case 4:
+ default:
+ elt = (char *) (*(int32 *) s);
+ break;
+ }
+ s += inp_typlen;
+ } else {
+ elt = s;
+ if (inp_typlen > 0) {
+ s += inp_typlen;
+ } else {
+ s += INTALIGN(*(int32 *) s);
+ }
+ }
+
+ /*
+ * Apply the given function to source elt and extra args.
+ * nargs is the number of extra args taken by fn().
+ */
+ switch (nargs) {
+ case 0:
+ p = (char *) (*fn) (elt);
+ break;
+ case 1:
+ p = (char *) (*fn) (elt, args[0]);
+ break;
+ case 2:
+ p = (char *) (*fn) (elt, args[0], args[1]);
+ break;
+ case 3:
+ p = (char *) (*fn) (elt, args[0], args[1], args[2]);
+ break;
+ case 4:
+ default:
+ p = (char *) (*fn) (elt, args[0], args[1], args[2], args[3]);
+ break;
+ }
+
+ /* Update values and total result size */
+ if (typbyval) {
+ values[i] = (char *) p;
+ nbytes += typlen;
+ } else {
+ int len;
+ len = ((typlen > 0) ? typlen : INTALIGN(*(int32 *) p));
+ /* Needed because _CopyArrayEls tries to pfree items */
+ if (p == elt) {
+ p = (char *) palloc(len);
+ memcpy(p, elt, len);
+ }
+ values[i] = (char *) p;
+ nbytes += len;
+ }
+ }
+
+ /* Allocate and initialize the result array */
+ nbytes += ARR_OVERHEAD(ndim);
+ result = (ArrayType *) palloc(nbytes);
+ MemSet(result, 0, nbytes);
+
+ memcpy((char *) result, (char *) &nbytes, sizeof(int));
+ memcpy((char *) ARR_NDIM_PTR(result), (char *) &ndim, sizeof(int));
+ memcpy((char *) ARR_DIMS(result), ARR_DIMS(v), 2 * ndim * sizeof(int));
+
+ /* Copy new values into the result array. values is pfreed. */
+ _CopyArrayEls((char **) values,
+ ARR_DATA_PTR(result), nitems,
+ typlen, typalign, typbyval);
+
+ return result;
+}
+
/*-----------------------------------------------------------------------------
* array_eq :
* compares two arrays for equality
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 39ae0632483..4d88413a8e4 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -3,7 +3,7 @@
* out of it's tuple
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.9 1999/04/29 15:52:01 wieck Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.10 1999/05/03 19:10:01 momjian Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -57,6 +57,7 @@
#include "catalog/pg_opclass.h"
#include "fmgr.h"
+#define BUFSIZE 8192
/* ----------
* Local data types
@@ -331,8 +332,8 @@ pg_get_indexdef(Oid indexrelid)
int spirc;
int len;
int keyno;
- char buf[8192];
- char keybuf[8192];
+ char buf[BUFSIZE];
+ char keybuf[BUFSIZE];
char *sep;
/* ----------
@@ -603,7 +604,7 @@ make_ruledef(HeapTuple ruletup, TupleDesc rulettc)
* Allocate space for the returned rule definition text
* ----------
*/
- buf = palloc(8192);
+ buf = palloc(BUFSIZE);
/* ----------
* Get the attribute values from the rules tuple
@@ -746,7 +747,7 @@ make_ruledef(HeapTuple ruletup, TupleDesc rulettc)
static char *
make_viewdef(HeapTuple ruletup, TupleDesc rulettc)
{
- char buf[8192];
+ char buf[BUFSIZE];
Query *query;
char ev_type;
Oid ev_class;
@@ -854,7 +855,7 @@ get_query_def(Query *query, QryHier *parentqh)
static char *
get_select_query_def(Query *query, QryHier *qh)
{
- char buf[8192];
+ char buf[BUFSIZE];
char *sep;
TargetEntry *tle;
RangeTblEntry *rte;
@@ -1024,7 +1025,7 @@ get_select_query_def(Query *query, QryHier *qh)
static char *
get_insert_query_def(Query *query, QryHier *qh)
{
- char buf[8192];
+ char buf[BUFSIZE];
char *sep;
TargetEntry *tle;
RangeTblEntry *rte;
@@ -1134,7 +1135,7 @@ get_insert_query_def(Query *query, QryHier *qh)
static char *
get_update_query_def(Query *query, QryHier *qh)
{
- char buf[8192];
+ char buf[BUFSIZE];
char *sep;
TargetEntry *tle;
RangeTblEntry *rte;
@@ -1187,7 +1188,7 @@ get_update_query_def(Query *query, QryHier *qh)
static char *
get_delete_query_def(Query *query, QryHier *qh)
{
- char buf[8192];
+ char buf[BUFSIZE];
RangeTblEntry *rte;
/* ----------
@@ -1221,7 +1222,7 @@ get_delete_query_def(Query *query, QryHier *qh)
static char *
get_rule_expr(QryHier *qh, int rt_index, Node *node, bool varprefix)
{
- char buf[8192];
+ char buf[BUFSIZE];
if (node == NULL)
return pstrdup("");
@@ -1408,7 +1409,7 @@ get_rule_expr(QryHier *qh, int rt_index, Node *node, bool varprefix)
static char *
get_func_expr(QryHier *qh, int rt_index, Expr *expr, bool varprefix)
{
- char buf[8192];
+ char buf[BUFSIZE];
HeapTuple proctup;
Form_pg_proc procStruct;
List *l;
@@ -1564,7 +1565,7 @@ get_const_expr(Const *constval)
FmgrInfo finfo_output;
char *extval;
bool isnull = FALSE;
- char buf[8192];
+ char buf[BUFSIZE];
char namebuf[64];
if (constval->constisnull)
@@ -1601,7 +1602,7 @@ get_sublink_expr(QryHier *qh, int rt_index, Node *node, bool varprefix)
Expr *expr;
List *l;
char *sep;
- char buf[8192];
+ char buf[BUFSIZE];
buf[0] = '\0';
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 8a06e6f4fd0..0aa8133b131 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -7,14 +7,16 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.43 1999/02/13 23:19:35 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.44 1999/05/03 19:10:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include <stdio.h> /* for sprintf() */
#include <string.h>
#include "postgres.h"
+#include "utils/array.h"
#include "utils/builtins.h"
+#include "catalog/pg_type.h"
#ifdef CYR_RECODE
char *convertstr(char *, int, int);
@@ -200,6 +202,16 @@ bpchar(char *s, int32 len)
return result;
} /* bpchar() */
+/* _bpchar()
+ * Converts an array of char() type to a specific internal length.
+ * len is the length specified in () plus VARHDRSZ bytes.
+ */
+ArrayType *
+_bpchar(ArrayType *v, int32 len)
+{
+ return array_map(v, BPCHAROID, bpchar, BPCHAROID, 1, len);
+}
+
/* bpchar_char()
* Convert bpchar(1) to char.
@@ -396,6 +408,16 @@ varchar(char *s, int32 slen)
return result;
} /* varchar() */
+/* _varchar()
+ * Converts an array of varchar() type to the specified size.
+ * len is the length specified in () plus VARHDRSZ bytes.
+ */
+ArrayType *
+_varchar(ArrayType *v, int32 len)
+{
+ return array_map(v, VARCHAROID, varchar, VARCHAROID, 1, len);
+}
+
/*****************************************************************************
* Comparison Functions used for bpchar
diff --git a/src/bin/psql/psql.c b/src/bin/psql/psql.c
index df0e9f425ba..6644da87ea8 100644
--- a/src/bin/psql/psql.c
+++ b/src/bin/psql/psql.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.176 1999/04/25 23:10:36 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.177 1999/05/03 19:10:08 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -115,7 +115,7 @@ static char *has_client_encoding = 0;
#define CMD_TERMINATE 2
#define CMD_NEWEDIT 3
-#define MAX_QUERY_BUFFER 20000
+#define MAX_QUERY_BUFFER MAX_QUERY_SIZE
#define COPYBUFSIZ 8192
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 76f9bbf8160..5b5687dfbd3 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_proc.h,v 1.96 1999/04/20 03:51:13 tgl Exp $
+ * $Id: pg_proc.h,v 1.97 1999/05/03 19:10:18 momjian Exp $
*
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
@@ -1553,6 +1553,11 @@ DESCR("convert int8 to text");
DATA(insert OID = 1289 ( text_int8 PGUID 11 f t f 1 f 20 "25" 100 0 0 100 text_int8 - ));
DESCR("convert text to int8");
+DATA(insert OID = 1290 ( _bpchar PGUID 11 f t f 2 f 1014 "1014 23" 100 0 0 100 _bpchar - ));
+DESCR("truncate _char()");
+DATA(insert OID = 1291 ( _varchar PGUID 11 f t f 2 f 1015 "1015 23" 100 0 0 100 _varchar - ));
+DESCR("truncate _varchar()");
+
DATA(insert OID = 1297 ( timestamp_in PGUID 11 f t f 1 f 1296 "0" 100 0 0 100 timestamp_in - ));
DESCR("(internal)");
DATA(insert OID = 1298 ( timestamp_out PGUID 11 f t f 1 f 23 "0" 100 0 0 100 timestamp_out - ));
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 49d5e011832..aa8d703ad2c 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -7,7 +7,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_type.h,v 1.58 1999/03/28 02:01:39 tgl Exp $
+ * $Id: pg_type.h,v 1.59 1999/05/03 19:10:20 momjian Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -327,6 +327,8 @@ DATA(insert OID = 1010 ( _tid PGUID -1 -1 f b t \054 0 27 array_in array_out
DATA(insert OID = 1011 ( _xid PGUID -1 -1 f b t \054 0 28 array_in array_out array_in array_out i _null_ ));
DATA(insert OID = 1012 ( _cid PGUID -1 -1 f b t \054 0 29 array_in array_out array_in array_out i _null_ ));
DATA(insert OID = 1013 ( _oid8 PGUID -1 -1 f b t \054 0 30 array_in array_out array_in array_out i _null_ ));
+DATA(insert OID = 1014 ( _bpchar PGUID -1 -1 f b t \054 0 1042 array_in array_out array_in array_out i _null_ ));
+DATA(insert OID = 1015 ( _varchar PGUID -1 -1 f b t \054 0 1043 array_in array_out array_in array_out i _null_ ));
DATA(insert OID = 1017 ( _point PGUID -1 -1 f b t \054 0 600 array_in array_out array_in array_out d _null_ ));
DATA(insert OID = 1018 ( _lseg PGUID -1 -1 f b t \054 0 601 array_in array_out array_in array_out d _null_ ));
DATA(insert OID = 1019 ( _path PGUID -1 -1 f b t \054 0 602 array_in array_out array_in array_out d _null_ ));
diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h
index 53542993d87..12024b720f4 100644
--- a/src/include/libpq/pqcomm.h
+++ b/src/include/libpq/pqcomm.h
@@ -8,7 +8,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pqcomm.h,v 1.34 1999/04/25 03:19:13 tgl Exp $
+ * $Id: pqcomm.h,v 1.35 1999/05/03 19:10:24 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -27,6 +27,11 @@
#include <netinet/in.h>
#endif
+/*
+ * Internal send/receive buffers in libpq.
+ */
+#define PQ_BUFFER_SIZE 8192
+
/* Define a generic socket address type. */
typedef union SockAddr
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index fa5397f070e..1cec52a1a89 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -11,7 +11,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: miscadmin.h,v 1.36 1999/03/17 22:53:30 momjian Exp $
+ * $Id: miscadmin.h,v 1.37 1999/05/03 19:10:09 momjian Exp $
*
* NOTES
* some of the information in this file will be moved to
@@ -100,7 +100,8 @@ extern int SortMem;
extern Oid LastOidProcessed; /* for query rewrite */
-#define MAX_PARSE_BUFFER 8192
+/* #define MAX_QUERY_SIZE (BLCKSZ*2) */
+#define MAX_PARSE_BUFFER MAX_QUERY_SIZE
/*
* default number of buffers in buffer pool
diff --git a/src/include/postgres.h b/src/include/postgres.h
index ab57059295f..1edaf853988 100644
--- a/src/include/postgres.h
+++ b/src/include/postgres.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1995, Regents of the University of California
*
- * $Id: postgres.h,v 1.21 1999/03/25 03:49:28 tgl Exp $
+ * $Id: postgres.h,v 1.22 1999/05/03 19:10:14 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -151,6 +151,7 @@ typedef uint32 CommandId;
* ----------------
*/
#define MAXPGPATH 128
+#define MAX_QUERY_SIZE (BLCKSZ*2)
#define STATUS_OK (0)
#define STATUS_ERROR (-1)
diff --git a/src/include/utils/array.h b/src/include/utils/array.h
index 833727e07fb..7ea945bf5fb 100644
--- a/src/include/utils/array.h
+++ b/src/include/utils/array.h
@@ -10,7 +10,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: array.h,v 1.15 1999/02/13 23:22:15 momjian Exp $
+ * $Id: array.h,v 1.16 1999/05/03 19:10:25 momjian Exp $
*
* NOTES
* XXX the data array should be LONGALIGN'd -- notice that the array
@@ -103,7 +103,7 @@ typedef struct
#define RETURN_NULL {*isNull = true; return(0); }
/* #endif *//* irix5 */
#define NAME_LEN 30
-#define MAX_BUFF_SIZE (1 << 13)
+#define MAX_BUFF_SIZE BLCKSZ
typedef struct
{
@@ -126,6 +126,8 @@ extern char *array_set(ArrayType *array, int n, int *indx, char *dataPtr,
extern char *array_assgn(ArrayType *array, int n, int *upperIndx,
int *lowerIndx, ArrayType *newArr, int reftype,
int len, bool *isNull);
+extern ArrayType *array_map(ArrayType *v, Oid type, char *(fn)(char *p, ...),
+ Oid retType, int nargs, ...);
extern int array_eq(ArrayType *array1, ArrayType *array2);
extern int _LOtransfer(char **destfd, int size, int nitems, char **srcfd,
int isSrcLO, int isDestLO);
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index 47dbef4c67b..71fb63c77fe 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: builtins.h,v 1.77 1999/03/15 03:24:31 tgl Exp $
+ * $Id: builtins.h,v 1.78 1999/05/03 19:10:31 momjian Exp $
*
* NOTES
* This should normally only be included by fmgr.h.
@@ -23,6 +23,7 @@
#define BUILTINS_H
#include <storage/itemptr.h>
+#include <utils/array.h>
#include <utils/geo_decls.h>
#include <utils/datetime.h>
#include <utils/nabstime.h>
@@ -411,6 +412,7 @@ time_t datetime_timestamp(DateTime *datetime);
extern char *bpcharin(char *s, int dummy, int32 atttypmod);
extern char *bpcharout(char *s);
extern char *bpchar(char *s, int32 slen);
+extern ArrayType *_bpchar(ArrayType *v, int32 slen);
extern char *char_bpchar(int32 c);
extern int32 bpchar_char(char *s);
extern char *name_bpchar(NameData *s);
@@ -429,6 +431,7 @@ extern uint32 hashbpchar(struct varlena * key);
extern char *varcharin(char *s, int dummy, int32 atttypmod);
extern char *varcharout(char *s);
extern char *varchar(char *s, int32 slen);
+extern ArrayType *_varchar(ArrayType *v, int32 slen);
extern bool varchareq(char *arg1, char *arg2);
extern bool varcharne(char *arg1, char *arg2);
extern bool varcharlt(char *arg1, char *arg2);
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index e2025adccac..6952b078f84 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -38,7 +38,9 @@ ecpg: $(OBJ)
pgc.c: pgc.l
$(LEX) $<
- mv lex.yy.c pgc.c
+ sed -e 's/#define YY_BUF_SIZE .*/#define YY_BUF_SIZE 65536/' \
+ <lex.yy.c >pgc.c
+ rm -f lex.yy.c
preproc.o : preproc.h ../include/ecpgtype.h keywords.c c_keywords.c ecpg_keywords.c
type.o : ../include/ecpgtype.h
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index 0ae21909785..44542cb83bf 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -28,6 +28,11 @@
#include "preproc.h"
#include "utils/builtins.h"
+#ifdef YY_READ_BUF_SIZE
+#undef YY_READ_BUF_SIZE
+#endif
+#define YY_READ_BUF_SIZE MAX_PARSE_BUFFER
+
/* some versions of lex define this as a macro */
#if defined(yywrap)
#undef yywrap
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index cfc3e36b7f9..fb78b1ee371 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.95 1999/03/29 08:19:36 ishii Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.96 1999/05/03 19:10:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -876,9 +876,9 @@ makeEmptyPGconn(void)
conn->asyncStatus = PGASYNC_IDLE;
conn->notifyList = DLNewList();
conn->sock = -1;
- conn->inBufSize = 8192;
+ conn->inBufSize = PQ_BUFFER_SIZE;
conn->inBuffer = (char *) malloc(conn->inBufSize);
- conn->outBufSize = 8192;
+ conn->outBufSize = PQ_BUFFER_SIZE;
conn->outBuffer = (char *) malloc(conn->outBufSize);
if (conn->inBuffer == NULL || conn->outBuffer == NULL)
{
diff --git a/src/interfaces/libpq/fe-print.c b/src/interfaces/libpq/fe-print.c
index fa358c70d4e..25e58bc9501 100644
--- a/src/interfaces/libpq/fe-print.c
+++ b/src/interfaces/libpq/fe-print.c
@@ -9,7 +9,7 @@
* didn't really belong there.
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v 1.21 1999/04/25 18:16:47 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v 1.22 1999/05/03 19:10:41 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -105,7 +105,7 @@ PQprint(FILE *fout,
int usePipe = 0;
pqsigfunc oldsigpipehandler = NULL;
char *pagerenv;
- char buf[8192 * 2 + 1];
+ char buf[MAX_QUERY_SIZE + 1];
nTups = PQntuples(res);
if (!(fieldNames = (char **) calloc(nFields, sizeof(char *))))
diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h
index dfc4dba8500..aaeffa3459a 100644
--- a/src/interfaces/libpq/libpq-int.h
+++ b/src/interfaces/libpq/libpq-int.h
@@ -11,7 +11,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: libpq-int.h,v 1.6 1999/02/13 23:22:42 momjian Exp $
+ * $Id: libpq-int.h,v 1.7 1999/05/03 19:10:42 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -255,7 +255,7 @@ extern int pqFlush(PGconn *conn);
extern int pqWait(int forRead, int forWrite, PGconn *conn);
/* max length of message to send */
-#define MAX_MESSAGE_LEN 8193
+#define MAX_MESSAGE_LEN MAX_QUERY_SIZE
/* maximum number of fields in a tuple */
#define MAX_FIELDS 512
diff --git a/src/interfaces/odbc/info.c b/src/interfaces/odbc/info.c
index 9e019dbba3c..d18620f69be 100644
--- a/src/interfaces/odbc/info.c
+++ b/src/interfaces/odbc/info.c
@@ -337,7 +337,7 @@ RETCODE result;
case SQL_MAX_ROW_SIZE: /* ODBC 2.0 */
len = 4;
- value = 8192;
+ value = BLCKSZ;
break;
case SQL_MAX_ROW_SIZE_INCLUDES_LONG: /* ODBC 2.0 */
@@ -348,9 +348,9 @@ RETCODE result;
break;
case SQL_MAX_STATEMENT_LEN: /* ODBC 2.0 */
- /* maybe this should be 8192? */
+ /* maybe this should be 0? */
len = 4;
- value = 0;
+ value = MAX_QUERY_SIZE;
break;
case SQL_MAX_TABLE_NAME_LEN: /* ODBC 1.0 */
diff --git a/src/interfaces/odbc/psqlodbc.h b/src/interfaces/odbc/psqlodbc.h
index 8b095e335d0..6ab559d91ab 100644
--- a/src/interfaces/odbc/psqlodbc.h
+++ b/src/interfaces/odbc/psqlodbc.h
@@ -49,7 +49,8 @@ typedef UInt4 Oid;
#endif
/* Limits */
-#define MAX_MESSAGE_LEN 8192
+#define MAX_QUERY_SIZE (BLCKSZ*2)
+#define MAX_MESSAGE_LEN MAX_QUERY_SIZE
#define MAX_CONNECT_STRING 4096
#define ERROR_MSG_LENGTH 4096
#define FETCH_MAX 100 /* default number of rows to cache for declare/fetch */
diff --git a/src/interfaces/python/pgmodule.c b/src/interfaces/python/pgmodule.c
index 2dc8bf59364..34c534e5ce8 100644
--- a/src/interfaces/python/pgmodule.c
+++ b/src/interfaces/python/pgmodule.c
@@ -51,7 +51,7 @@ static char *PyPgVersion = "2.2";
#define CHECK_OPEN 1
#define CHECK_CLOSE 2
-#define MAX_BUFFER_SIZE 8192 /* maximum transaction size */
+#define MAX_BUFFER_SIZE MAX_QUERY_SIZE /* maximum transaction size */
#ifndef NO_DIRECT
#define DIRECT_ACCESS 1 /* enables direct access functions */
diff --git a/src/test/regress/regress.c b/src/test/regress/regress.c
index d95ccb8bee7..9674c52d2d6 100644
--- a/src/test/regress/regress.c
+++ b/src/test/regress/regress.c
@@ -1,5 +1,5 @@
/*
- * $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.30 1999/02/21 03:49:55 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.31 1999/05/03 19:10:48 momjian Exp $
*/
#include <float.h> /* faked on sunos */
@@ -319,7 +319,7 @@ funny_dup17()
Relation rel;
TupleDesc tupdesc;
HeapTuple tuple;
- char sql[8192];
+ char sql[MAX_QUERY_SIZE];
char *when;
int inserted;
int selected = 0;
@@ -563,7 +563,7 @@ ttdummy()
{
void *pplan;
Oid *ctypes;
- char sql[8192];
+ char sql[MAX_QUERY_SIZE];
/* allocate ctypes for preparation */
ctypes = (Oid *) palloc(natts * sizeof(Oid));