pg_get_ruledef and extra line breaks
Hi,
I notice that the pretty printing version of pg_get_ruledef inserts extra
newlines whereas all the others pretty functions (except view defs) do
not. In fact, Andreas argued against a version of pg_get_triggerdef()
that added extra newlines.
eg, non-pretty:
test=# select pg_get_ruledef(oid) from pg_rewrite order by oid desc limit
8;;
pg_get_ruledef
-----------------------------------------------------------------------------------------------------------------
CREATE RULE r5 AS ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE r4 AS ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE r3 AS ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE r2 AS ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE r1 AS ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE "_RETURN" AS ON SELECT TO v DO INSTEAD SELECT 1;
CREATE RULE asdfx AS ON INSERT TO test WHERE ((((1 = 1) OR (1 = 2)) OR (1
= 3)) OR (1 = 5)) DO INSTEAD NOTHING;
CREATE RULE asdf AS ON INSERT TO test WHERE ((((1 = 1) OR (1 = 2)) OR (1
= 3)) OR (1 = 5)) DO INSTEAD NOTHING;
(8 rows)
eg, pretty:
test=# select pg_get_ruledef(oid, true) from pg_rewrite order by oid desc
limit 8;;
pg_get_ruledef
----------------------------------------------------------------------------------------------------------
CREATE RULE r5 AS
ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE r4 AS
ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE r3 AS
ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE r2 AS
ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE r1 AS
ON INSERT TO v DO INSTEAD NOTHING;
CREATE RULE "_RETURN" AS
ON SELECT TO v DO INSTEAD SELECT 1;
CREATE RULE asdfx AS
ON INSERT TO test
WHERE 1 = 1 OR 1 = 2 OR 1 = 3 OR 1 = 5 DO INSTEAD NOTHING;
CREATE RULE asdf AS
ON INSERT TO test
WHERE 1 = 1 OR 1 = 2 OR 1 = 3 OR 1 = 5 DO INSTEAD NOTHING;
(8 rows)
Are those newlines really necessary? They seem a bit out of place?
Chris
Christopher Kings-Lynne wrote:
Hi,
I notice that the pretty printing version of pg_get_ruledef inserts extra
newlines whereas all the others pretty functions (except view defs) do
not. In fact, Andreas argued against a version of pg_get_triggerdef()
that added extra newlines.
No, I did not *in general*, but for now because there's no node
traversing and a pretty formatted query can be easily constructed by
yourself as for all other non-pg_get_xxx supported objects.
CREATE RULE asdfx AS
ON INSERT TO test
WHERE 1 = 1 OR 1 = 2 OR 1 = 3 OR 1 = 5 DO INSTEAD NOTHING;
CREATE RULE asdf AS
ON INSERT TO test
WHERE 1 = 1 OR 1 = 2 OR 1 = 3 OR 1 = 5 DO INSTEAD NOTHING;
(8 rows)Are those newlines really necessary? They seem a bit out of place?
Matter of taste. Things look different if action is not NOTHING, but
something more.
Regards,
Andreas
No, I did not *in general*, but for now because there's no node
traversing and a pretty formatted query can be easily constructed by
yourself as for all other non-pg_get_xxx supported objects.
The reason I bring it up is that if psql is changed to use the pretty
printing option, then the rules take up several lines, instead of one
(like the other objects)
Chris
Christopher Kings-Lynne wrote:
No, I did not *in general*, but for now because there's no node
traversing and a pretty formatted query can be easily constructed by
yourself as for all other non-pg_get_xxx supported objects.The reason I bring it up is that if psql is changed to use the pretty
printing option, then the rules take up several lines, instead of one
(like the other objects)
Chris, can you show us what that would look like? I can see a reason
for using multiple lines for rules, and single lines for everything
else.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073