[Patch] Fix enum type mismatch

Started by Zdenek Kotalaabout 16 years ago2 messages
#1Zdenek Kotala
Zdenek.Kotala@Sun.COM
1 attachment(s)

Attached patch fixed following warning:

"../../../src/include/nodes/parsenodes.h", line 487: warning: enumerator
value overflows INT_MAX (2147483647)

The reason is clear, enum is int not unsigned.

It is short fix, but I'm thinking about enum conversion to #define. We
use e.g. in the same file.

60 typedef uint32 AclMode; /* a bitmask of privilege bits */
61
62 #define ACL_INSERT (1<<0) /* for relations */
63 #define ACL_SELECT (1<<1)
64 #define ACL_UPDATE (1<<2)
65 #define ACL_DELETE (1<<3)
66 #define ACL_TRUNCATE (1<<4)
67 #define ACL_REFERENCES (1<<5)
68 #define ACL_TRIGGER (1<<6)

Zdenek

Attachments:

parsenode.patchtext/x-patch; CHARSET=US-ASCII; name=parsenode.patchDownload
diff -r 68b8827f4738 src/include/nodes/parsenodes.h
--- a/src/include/nodes/parsenodes.h	Fri Nov 13 11:17:04 2009 +0000
+++ b/src/include/nodes/parsenodes.h	Fri Nov 13 16:21:38 2009 +0100
@@ -484,7 +484,7 @@
 	CREATE_TABLE_LIKE_INDEXES		= 1 << 2,
 	CREATE_TABLE_LIKE_STORAGE		= 1 << 3,
 	CREATE_TABLE_LIKE_COMMENTS		= 1 << 4,
-	CREATE_TABLE_LIKE_ALL			= 0xFFFFFFFF
+	CREATE_TABLE_LIKE_ALL			= 0x7FFFFFFF	/* enum is int */ 
 } CreateStmtLikeOption;
 
 /*
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Zdenek Kotala (#1)
Re: [Patch] Fix enum type mismatch

Zdenek Kotala <Zdenek.Kotala@Sun.COM> writes:

Attached patch fixed following warning:
"../../../src/include/nodes/parsenodes.h", line 487: warning: enumerator
value overflows INT_MAX (2147483647)

The reason is clear, enum is int not unsigned.

I think the compiler is entitled to assume either, actually.
But your fix is good either way. Applied.

regards, tom lane