Skip to content

Commit 5285b35

Browse files
author
Neil Conway
committed
Add explicit casts between int4 and boolean. Patch from Sean Chittenden,
editorializing by Neil Conway. Catalog version bumped.
1 parent 2d22f16 commit 5285b35

File tree

5 files changed

+36
-6
lines changed

5 files changed

+36
-6
lines changed

src/backend/utils/adt/int.c

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.64 2004/12/31 22:01:22 pgsql Exp $
11+
* $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.65 2005/02/27 08:31:30 neilc Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -361,6 +361,25 @@ text_int4(PG_FUNCTION_ARGS)
361361
return result;
362362
}
363363

364+
/* Cast int4 -> bool */
365+
Datum
366+
int4_bool(PG_FUNCTION_ARGS)
367+
{
368+
if (PG_GETARG_INT32(0) == 0)
369+
PG_RETURN_BOOL(false);
370+
else
371+
PG_RETURN_BOOL(true);
372+
}
373+
374+
/* Cast bool -> int4 */
375+
Datum
376+
bool_int4(PG_FUNCTION_ARGS)
377+
{
378+
if (PG_GETARG_BOOL(0) == false)
379+
PG_RETURN_INT32(0);
380+
else
381+
PG_RETURN_INT32(1);
382+
}
364383

365384
/*
366385
* ============================

src/include/catalog/catversion.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
3838
* Portions Copyright (c) 1994, Regents of the University of California
3939
*
40-
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.255 2005/02/26 18:43:34 tgl Exp $
40+
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.256 2005/02/27 08:31:30 neilc Exp $
4141
*
4242
*-------------------------------------------------------------------------
4343
*/
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/* yyyymmddN */
56-
#define CATALOG_VERSION_NO 200502261
56+
#define CATALOG_VERSION_NO 200502271
5757

5858
#endif

src/include/catalog/pg_cast.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
* Copyright (c) 2002-2005, PostgreSQL Global Development Group
1212
*
13-
* $PostgreSQL: pgsql/src/include/catalog/pg_cast.h,v 1.17 2005/01/01 05:43:09 momjian Exp $
13+
* $PostgreSQL: pgsql/src/include/catalog/pg_cast.h,v 1.18 2005/02/27 08:31:30 neilc Exp $
1414
*
1515
* NOTES
1616
* the genbki.sh script reads this file and generates .bki
@@ -101,6 +101,10 @@ DATA(insert ( 1700 23 1744 a ));
101101
DATA(insert ( 1700 700 1745 i ));
102102
DATA(insert ( 1700 701 1746 i ));
103103

104+
/* Allow explicit coercions between int4 and bool */
105+
DATA(insert ( 23 16 2557 e ));
106+
DATA(insert ( 16 23 2558 e ));
107+
104108
/*
105109
* OID category: allow implicit conversion from any integral type (including
106110
* int8, to support OID literals > 2G) to OID, as well as assignment coercion

src/include/catalog/pg_proc.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.350 2005/02/26 18:43:34 tgl Exp $
10+
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.351 2005/02/27 08:31:30 neilc Exp $
1111
*
1212
* NOTES
1313
* The script catalog/genbki.sh reads this file and generates .bki
@@ -3604,6 +3604,11 @@ DATA(insert OID = 2550 ( integer_pl_date PGNSP PGUID 14 f f t f i 2 1082 "23 1
36043604
DATA(insert OID = 2556 ( pg_tablespace_databases PGNSP PGUID 12 f f t t s 1 26 "26" _null_ pg_tablespace_databases - _null_));
36053605
DESCR("returns database oids in a tablespace");
36063606

3607+
DATA(insert OID = 2557 ( bool PGNSP PGUID 12 f f t f i 1 16 "23" _null_ int4_bool - _null_ ));
3608+
DESCR("convert int4 to boolean");
3609+
DATA(insert OID = 2558 ( int4 PGNSP PGUID 12 f f t f i 1 23 "16" _null_ bool_int4 - _null_ ));
3610+
DESCR("convert boolean to int4");
3611+
36073612

36083613
/*
36093614
* Symbolic values for provolatile column: these indicate whether the result

src/include/utils/builtins.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.252 2004/12/31 22:03:45 pgsql Exp $
10+
* $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.253 2005/02/27 08:31:30 neilc Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -111,6 +111,8 @@ extern Datum i2toi4(PG_FUNCTION_ARGS);
111111
extern Datum i4toi2(PG_FUNCTION_ARGS);
112112
extern Datum int2_text(PG_FUNCTION_ARGS);
113113
extern Datum text_int2(PG_FUNCTION_ARGS);
114+
extern Datum int4_bool(PG_FUNCTION_ARGS);
115+
extern Datum bool_int4(PG_FUNCTION_ARGS);
114116
extern Datum int4_text(PG_FUNCTION_ARGS);
115117
extern Datum text_int4(PG_FUNCTION_ARGS);
116118
extern Datum int4eq(PG_FUNCTION_ARGS);

0 commit comments

Comments
 (0)