* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/backend/libpq/pqformat.c,v 1.37 2004/12/31 21:59:50 pgsql Exp $
+ * $PostgreSQL: pgsql/src/backend/libpq/pqformat.c,v 1.38 2005/09/24 15:34:07 tgl Exp $
*
*-------------------------------------------------------------------------
*/
l32 = ntohl(l32);
#ifdef INT64_IS_BUSTED
- /* just lose the high half */
+ /* error out if incoming value is wider than 32 bits */
result = l32;
+ if ((result < 0) ? (h32 != -1) : (h32 != 0))
+ ereport(ERROR,
+ (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
+ errmsg("binary value is out of range for type bigint")));
#else
result = h32;
result <<= 32;