Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2e3b16c

Browse files
committed
Improve PL/Python elog output
When the elog functions (plpy.info etc.) get a single argument, just printthat argument instead of printing the single-member tuple like ('foo',).
1 parent2fe1b4d commit2e3b16c

File tree

6 files changed

+122
-109
lines changed

6 files changed

+122
-109
lines changed

‎src/pl/plpython/expected/plpython_import.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ return "sha hash of " + plain + " is " + digest.hexdigest()'
5151
-- import python modules
5252
--
5353
SELECT import_fail();
54-
NOTICE:('import socket failed -- No module named foosocket',)
54+
NOTICE: import socket failed -- No module named foosocket
5555
CONTEXT: PL/Python function "import_fail"
5656
import_fail
5757
--------------------

‎src/pl/plpython/expected/plpython_spi.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ else:
125125
return None
126126
$$ LANGUAGE plpythonu;
127127
SELECT result_nrows_test();
128-
INFO:(True,)
128+
INFO: True
129129
CONTEXT: PL/Python function "result_nrows_test"
130130
result_nrows_test
131131
-------------------

‎src/pl/plpython/expected/plpython_test.out

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,24 @@ plpy.debug('debug')
3232
plpy.log('log')
3333
plpy.info('info')
3434
plpy.info(37)
35+
plpy.info()
3536
plpy.info('info', 37, [1, 2, 3])
3637
plpy.notice('notice')
3738
plpy.warning('warning')
3839
plpy.error('error')
3940
$$ LANGUAGE plpythonu;
4041
SELECT elog_test();
41-
INFO:('info',)
42+
INFO: info
4243
CONTEXT: PL/Python function "elog_test"
43-
INFO: (37,)
44+
INFO: 37
45+
CONTEXT: PL/Python function "elog_test"
46+
INFO: ()
4447
CONTEXT: PL/Python function "elog_test"
4548
INFO: ('info', 37, [1, 2, 3])
4649
CONTEXT: PL/Python function "elog_test"
47-
NOTICE:('notice',)
50+
NOTICE: notice
4851
CONTEXT: PL/Python function "elog_test"
49-
WARNING:('warning',)
52+
WARNING: warning
5053
CONTEXT: PL/Python function "elog_test"
51-
ERROR:('error',)
54+
ERROR: error
5255
CONTEXT: PL/Python function "elog_test"

‎src/pl/plpython/expected/plpython_trigger.out

Lines changed: 100 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -91,208 +91,208 @@ CREATE TRIGGER show_trigger_data_trig_stmt
9191
BEFORE INSERT OR UPDATE OR DELETE OR TRUNCATE ON trigger_test
9292
FOR EACH STATEMENT EXECUTE PROCEDURE trigger_data(23,'skidoo');
9393
insert into trigger_test values(1,'insert');
94-
NOTICE:("TD[args] => ['23', 'skidoo']",)
94+
NOTICE: TD[args] => ['23', 'skidoo']
9595
CONTEXT: PL/Python function "trigger_data"
96-
NOTICE:('TD[event] => INSERT',)
96+
NOTICE: TD[event] => INSERT
9797
CONTEXT: PL/Python function "trigger_data"
98-
NOTICE:('TD[level] => STATEMENT',)
98+
NOTICE: TD[level] => STATEMENT
9999
CONTEXT: PL/Python function "trigger_data"
100-
NOTICE:('TD[name] => show_trigger_data_trig_stmt',)
100+
NOTICE: TD[name] => show_trigger_data_trig_stmt
101101
CONTEXT: PL/Python function "trigger_data"
102-
NOTICE:('TD[new] => None',)
102+
NOTICE: TD[new] => None
103103
CONTEXT: PL/Python function "trigger_data"
104-
NOTICE:('TD[old] => None',)
104+
NOTICE: TD[old] => None
105105
CONTEXT: PL/Python function "trigger_data"
106-
NOTICE:('TD[relid] => bogus:12345',)
106+
NOTICE: TD[relid] => bogus:12345
107107
CONTEXT: PL/Python function "trigger_data"
108-
NOTICE:('TD[table_name] => trigger_test',)
108+
NOTICE: TD[table_name] => trigger_test
109109
CONTEXT: PL/Python function "trigger_data"
110-
NOTICE:('TD[table_schema] => public',)
110+
NOTICE: TD[table_schema] => public
111111
CONTEXT: PL/Python function "trigger_data"
112-
NOTICE:('TD[when] => BEFORE',)
112+
NOTICE: TD[when] => BEFORE
113113
CONTEXT: PL/Python function "trigger_data"
114-
NOTICE:("TD[args] => ['23', 'skidoo']",)
114+
NOTICE: TD[args] => ['23', 'skidoo']
115115
CONTEXT: PL/Python function "trigger_data"
116-
NOTICE:('TD[event] => INSERT',)
116+
NOTICE: TD[event] => INSERT
117117
CONTEXT: PL/Python function "trigger_data"
118-
NOTICE:('TD[level] => ROW',)
118+
NOTICE: TD[level] => ROW
119119
CONTEXT: PL/Python function "trigger_data"
120-
NOTICE:('TD[name] => show_trigger_data_trig_before',)
120+
NOTICE: TD[name] => show_trigger_data_trig_before
121121
CONTEXT: PL/Python function "trigger_data"
122-
NOTICE:("TD[new] => {'i': 1, 'v': 'insert'}",)
122+
NOTICE: TD[new] => {'i': 1, 'v': 'insert'}
123123
CONTEXT: PL/Python function "trigger_data"
124-
NOTICE:('TD[old] => None',)
124+
NOTICE: TD[old] => None
125125
CONTEXT: PL/Python function "trigger_data"
126-
NOTICE:('TD[relid] => bogus:12345',)
126+
NOTICE: TD[relid] => bogus:12345
127127
CONTEXT: PL/Python function "trigger_data"
128-
NOTICE:('TD[table_name] => trigger_test',)
128+
NOTICE: TD[table_name] => trigger_test
129129
CONTEXT: PL/Python function "trigger_data"
130-
NOTICE:('TD[table_schema] => public',)
130+
NOTICE: TD[table_schema] => public
131131
CONTEXT: PL/Python function "trigger_data"
132-
NOTICE:('TD[when] => BEFORE',)
132+
NOTICE: TD[when] => BEFORE
133133
CONTEXT: PL/Python function "trigger_data"
134-
NOTICE:("TD[args] => ['23', 'skidoo']",)
134+
NOTICE: TD[args] => ['23', 'skidoo']
135135
CONTEXT: PL/Python function "trigger_data"
136-
NOTICE:('TD[event] => INSERT',)
136+
NOTICE: TD[event] => INSERT
137137
CONTEXT: PL/Python function "trigger_data"
138-
NOTICE:('TD[level] => ROW',)
138+
NOTICE: TD[level] => ROW
139139
CONTEXT: PL/Python function "trigger_data"
140-
NOTICE:('TD[name] => show_trigger_data_trig_after',)
140+
NOTICE: TD[name] => show_trigger_data_trig_after
141141
CONTEXT: PL/Python function "trigger_data"
142-
NOTICE:("TD[new] => {'i': 1, 'v': 'insert'}",)
142+
NOTICE: TD[new] => {'i': 1, 'v': 'insert'}
143143
CONTEXT: PL/Python function "trigger_data"
144-
NOTICE:('TD[old] => None',)
144+
NOTICE: TD[old] => None
145145
CONTEXT: PL/Python function "trigger_data"
146-
NOTICE:('TD[relid] => bogus:12345',)
146+
NOTICE: TD[relid] => bogus:12345
147147
CONTEXT: PL/Python function "trigger_data"
148-
NOTICE:('TD[table_name] => trigger_test',)
148+
NOTICE: TD[table_name] => trigger_test
149149
CONTEXT: PL/Python function "trigger_data"
150-
NOTICE:('TD[table_schema] => public',)
150+
NOTICE: TD[table_schema] => public
151151
CONTEXT: PL/Python function "trigger_data"
152-
NOTICE:('TD[when] => AFTER',)
152+
NOTICE: TD[when] => AFTER
153153
CONTEXT: PL/Python function "trigger_data"
154154
update trigger_test set v = 'update' where i = 1;
155-
NOTICE:("TD[args] => ['23', 'skidoo']",)
155+
NOTICE: TD[args] => ['23', 'skidoo']
156156
CONTEXT: PL/Python function "trigger_data"
157-
NOTICE:('TD[event] => UPDATE',)
157+
NOTICE: TD[event] => UPDATE
158158
CONTEXT: PL/Python function "trigger_data"
159-
NOTICE:('TD[level] => STATEMENT',)
159+
NOTICE: TD[level] => STATEMENT
160160
CONTEXT: PL/Python function "trigger_data"
161-
NOTICE:('TD[name] => show_trigger_data_trig_stmt',)
161+
NOTICE: TD[name] => show_trigger_data_trig_stmt
162162
CONTEXT: PL/Python function "trigger_data"
163-
NOTICE:('TD[new] => None',)
163+
NOTICE: TD[new] => None
164164
CONTEXT: PL/Python function "trigger_data"
165-
NOTICE:('TD[old] => None',)
165+
NOTICE: TD[old] => None
166166
CONTEXT: PL/Python function "trigger_data"
167-
NOTICE:('TD[relid] => bogus:12345',)
167+
NOTICE: TD[relid] => bogus:12345
168168
CONTEXT: PL/Python function "trigger_data"
169-
NOTICE:('TD[table_name] => trigger_test',)
169+
NOTICE: TD[table_name] => trigger_test
170170
CONTEXT: PL/Python function "trigger_data"
171-
NOTICE:('TD[table_schema] => public',)
171+
NOTICE: TD[table_schema] => public
172172
CONTEXT: PL/Python function "trigger_data"
173-
NOTICE:('TD[when] => BEFORE',)
173+
NOTICE: TD[when] => BEFORE
174174
CONTEXT: PL/Python function "trigger_data"
175-
NOTICE:("TD[args] => ['23', 'skidoo']",)
175+
NOTICE: TD[args] => ['23', 'skidoo']
176176
CONTEXT: PL/Python function "trigger_data"
177-
NOTICE:('TD[event] => UPDATE',)
177+
NOTICE: TD[event] => UPDATE
178178
CONTEXT: PL/Python function "trigger_data"
179-
NOTICE:('TD[level] => ROW',)
179+
NOTICE: TD[level] => ROW
180180
CONTEXT: PL/Python function "trigger_data"
181-
NOTICE:('TD[name] => show_trigger_data_trig_before',)
181+
NOTICE: TD[name] => show_trigger_data_trig_before
182182
CONTEXT: PL/Python function "trigger_data"
183-
NOTICE:("TD[new] => {'i': 1, 'v': 'update'}",)
183+
NOTICE: TD[new] => {'i': 1, 'v': 'update'}
184184
CONTEXT: PL/Python function "trigger_data"
185-
NOTICE:("TD[old] => {'i': 1, 'v': 'insert'}",)
185+
NOTICE: TD[old] => {'i': 1, 'v': 'insert'}
186186
CONTEXT: PL/Python function "trigger_data"
187-
NOTICE:('TD[relid] => bogus:12345',)
187+
NOTICE: TD[relid] => bogus:12345
188188
CONTEXT: PL/Python function "trigger_data"
189-
NOTICE:('TD[table_name] => trigger_test',)
189+
NOTICE: TD[table_name] => trigger_test
190190
CONTEXT: PL/Python function "trigger_data"
191-
NOTICE:('TD[table_schema] => public',)
191+
NOTICE: TD[table_schema] => public
192192
CONTEXT: PL/Python function "trigger_data"
193-
NOTICE:('TD[when] => BEFORE',)
193+
NOTICE: TD[when] => BEFORE
194194
CONTEXT: PL/Python function "trigger_data"
195-
NOTICE:("TD[args] => ['23', 'skidoo']",)
195+
NOTICE: TD[args] => ['23', 'skidoo']
196196
CONTEXT: PL/Python function "trigger_data"
197-
NOTICE:('TD[event] => UPDATE',)
197+
NOTICE: TD[event] => UPDATE
198198
CONTEXT: PL/Python function "trigger_data"
199-
NOTICE:('TD[level] => ROW',)
199+
NOTICE: TD[level] => ROW
200200
CONTEXT: PL/Python function "trigger_data"
201-
NOTICE:('TD[name] => show_trigger_data_trig_after',)
201+
NOTICE: TD[name] => show_trigger_data_trig_after
202202
CONTEXT: PL/Python function "trigger_data"
203-
NOTICE:("TD[new] => {'i': 1, 'v': 'update'}",)
203+
NOTICE: TD[new] => {'i': 1, 'v': 'update'}
204204
CONTEXT: PL/Python function "trigger_data"
205-
NOTICE:("TD[old] => {'i': 1, 'v': 'insert'}",)
205+
NOTICE: TD[old] => {'i': 1, 'v': 'insert'}
206206
CONTEXT: PL/Python function "trigger_data"
207-
NOTICE:('TD[relid] => bogus:12345',)
207+
NOTICE: TD[relid] => bogus:12345
208208
CONTEXT: PL/Python function "trigger_data"
209-
NOTICE:('TD[table_name] => trigger_test',)
209+
NOTICE: TD[table_name] => trigger_test
210210
CONTEXT: PL/Python function "trigger_data"
211-
NOTICE:('TD[table_schema] => public',)
211+
NOTICE: TD[table_schema] => public
212212
CONTEXT: PL/Python function "trigger_data"
213-
NOTICE:('TD[when] => AFTER',)
213+
NOTICE: TD[when] => AFTER
214214
CONTEXT: PL/Python function "trigger_data"
215215
delete from trigger_test;
216-
NOTICE:("TD[args] => ['23', 'skidoo']",)
216+
NOTICE: TD[args] => ['23', 'skidoo']
217217
CONTEXT: PL/Python function "trigger_data"
218-
NOTICE:('TD[event] => DELETE',)
218+
NOTICE: TD[event] => DELETE
219219
CONTEXT: PL/Python function "trigger_data"
220-
NOTICE:('TD[level] => STATEMENT',)
220+
NOTICE: TD[level] => STATEMENT
221221
CONTEXT: PL/Python function "trigger_data"
222-
NOTICE:('TD[name] => show_trigger_data_trig_stmt',)
222+
NOTICE: TD[name] => show_trigger_data_trig_stmt
223223
CONTEXT: PL/Python function "trigger_data"
224-
NOTICE:('TD[new] => None',)
224+
NOTICE: TD[new] => None
225225
CONTEXT: PL/Python function "trigger_data"
226-
NOTICE:('TD[old] => None',)
226+
NOTICE: TD[old] => None
227227
CONTEXT: PL/Python function "trigger_data"
228-
NOTICE:('TD[relid] => bogus:12345',)
228+
NOTICE: TD[relid] => bogus:12345
229229
CONTEXT: PL/Python function "trigger_data"
230-
NOTICE:('TD[table_name] => trigger_test',)
230+
NOTICE: TD[table_name] => trigger_test
231231
CONTEXT: PL/Python function "trigger_data"
232-
NOTICE:('TD[table_schema] => public',)
232+
NOTICE: TD[table_schema] => public
233233
CONTEXT: PL/Python function "trigger_data"
234-
NOTICE:('TD[when] => BEFORE',)
234+
NOTICE: TD[when] => BEFORE
235235
CONTEXT: PL/Python function "trigger_data"
236-
NOTICE:("TD[args] => ['23', 'skidoo']",)
236+
NOTICE: TD[args] => ['23', 'skidoo']
237237
CONTEXT: PL/Python function "trigger_data"
238-
NOTICE:('TD[event] => DELETE',)
238+
NOTICE: TD[event] => DELETE
239239
CONTEXT: PL/Python function "trigger_data"
240-
NOTICE:('TD[level] => ROW',)
240+
NOTICE: TD[level] => ROW
241241
CONTEXT: PL/Python function "trigger_data"
242-
NOTICE:('TD[name] => show_trigger_data_trig_before',)
242+
NOTICE: TD[name] => show_trigger_data_trig_before
243243
CONTEXT: PL/Python function "trigger_data"
244-
NOTICE:('TD[new] => None',)
244+
NOTICE: TD[new] => None
245245
CONTEXT: PL/Python function "trigger_data"
246-
NOTICE:("TD[old] => {'i': 1, 'v': 'update'}",)
246+
NOTICE: TD[old] => {'i': 1, 'v': 'update'}
247247
CONTEXT: PL/Python function "trigger_data"
248-
NOTICE:('TD[relid] => bogus:12345',)
248+
NOTICE: TD[relid] => bogus:12345
249249
CONTEXT: PL/Python function "trigger_data"
250-
NOTICE:('TD[table_name] => trigger_test',)
250+
NOTICE: TD[table_name] => trigger_test
251251
CONTEXT: PL/Python function "trigger_data"
252-
NOTICE:('TD[table_schema] => public',)
252+
NOTICE: TD[table_schema] => public
253253
CONTEXT: PL/Python function "trigger_data"
254-
NOTICE:('TD[when] => BEFORE',)
254+
NOTICE: TD[when] => BEFORE
255255
CONTEXT: PL/Python function "trigger_data"
256-
NOTICE:("TD[args] => ['23', 'skidoo']",)
256+
NOTICE: TD[args] => ['23', 'skidoo']
257257
CONTEXT: PL/Python function "trigger_data"
258-
NOTICE:('TD[event] => DELETE',)
258+
NOTICE: TD[event] => DELETE
259259
CONTEXT: PL/Python function "trigger_data"
260-
NOTICE:('TD[level] => ROW',)
260+
NOTICE: TD[level] => ROW
261261
CONTEXT: PL/Python function "trigger_data"
262-
NOTICE:('TD[name] => show_trigger_data_trig_after',)
262+
NOTICE: TD[name] => show_trigger_data_trig_after
263263
CONTEXT: PL/Python function "trigger_data"
264-
NOTICE:('TD[new] => None',)
264+
NOTICE: TD[new] => None
265265
CONTEXT: PL/Python function "trigger_data"
266-
NOTICE:("TD[old] => {'i': 1, 'v': 'update'}",)
266+
NOTICE: TD[old] => {'i': 1, 'v': 'update'}
267267
CONTEXT: PL/Python function "trigger_data"
268-
NOTICE:('TD[relid] => bogus:12345',)
268+
NOTICE: TD[relid] => bogus:12345
269269
CONTEXT: PL/Python function "trigger_data"
270-
NOTICE:('TD[table_name] => trigger_test',)
270+
NOTICE: TD[table_name] => trigger_test
271271
CONTEXT: PL/Python function "trigger_data"
272-
NOTICE:('TD[table_schema] => public',)
272+
NOTICE: TD[table_schema] => public
273273
CONTEXT: PL/Python function "trigger_data"
274-
NOTICE:('TD[when] => AFTER',)
274+
NOTICE: TD[when] => AFTER
275275
CONTEXT: PL/Python function "trigger_data"
276276
truncate table trigger_test;
277-
NOTICE:("TD[args] => ['23', 'skidoo']",)
277+
NOTICE: TD[args] => ['23', 'skidoo']
278278
CONTEXT: PL/Python function "trigger_data"
279-
NOTICE:('TD[event] => TRUNCATE',)
279+
NOTICE: TD[event] => TRUNCATE
280280
CONTEXT: PL/Python function "trigger_data"
281-
NOTICE:('TD[level] => STATEMENT',)
281+
NOTICE: TD[level] => STATEMENT
282282
CONTEXT: PL/Python function "trigger_data"
283-
NOTICE:('TD[name] => show_trigger_data_trig_stmt',)
283+
NOTICE: TD[name] => show_trigger_data_trig_stmt
284284
CONTEXT: PL/Python function "trigger_data"
285-
NOTICE:('TD[new] => None',)
285+
NOTICE: TD[new] => None
286286
CONTEXT: PL/Python function "trigger_data"
287-
NOTICE:('TD[old] => None',)
287+
NOTICE: TD[old] => None
288288
CONTEXT: PL/Python function "trigger_data"
289-
NOTICE:('TD[relid] => bogus:12345',)
289+
NOTICE: TD[relid] => bogus:12345
290290
CONTEXT: PL/Python function "trigger_data"
291-
NOTICE:('TD[table_name] => trigger_test',)
291+
NOTICE: TD[table_name] => trigger_test
292292
CONTEXT: PL/Python function "trigger_data"
293-
NOTICE:('TD[table_schema] => public',)
293+
NOTICE: TD[table_schema] => public
294294
CONTEXT: PL/Python function "trigger_data"
295-
NOTICE:('TD[when] => BEFORE',)
295+
NOTICE: TD[when] => BEFORE
296296
CONTEXT: PL/Python function "trigger_data"
297297
DROP FUNCTION trigger_data() CASCADE;
298298
NOTICE: drop cascades to 3 other objects

‎src/pl/plpython/plpython.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**********************************************************************
22
* plpython.c - python as a procedural language for PostgreSQL
33
*
4-
*$PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.131 2009/11/0309:35:18 petere Exp $
4+
*$PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.132 2009/11/0311:05:02 petere Exp $
55
*
66
*********************************************************************
77
*/
@@ -3080,7 +3080,16 @@ PLy_output(volatile int level, PyObject *self, PyObject *args)
30803080
char*volatilesv;
30813081
volatileMemoryContextoldcontext;
30823082

3083-
so=PyObject_Str(args);
3083+
if (PyTuple_Size(args)==1)
3084+
{
3085+
/* Treat single argument specially to avoid undesirable
3086+
* ('tuple',) decoration. */
3087+
PyObject*o;
3088+
PyArg_UnpackTuple(args,"plpy.elog",1,1,&o);
3089+
so=PyObject_Str(o);
3090+
}
3091+
else
3092+
so=PyObject_Str(args);
30843093
if (so==NULL|| ((sv=PyString_AsString(so))==NULL))
30853094
{
30863095
level=ERROR;

‎src/pl/plpython/sql/plpython_test.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ plpy.debug('debug')
2727
plpy.log('log')
2828
plpy.info('info')
2929
plpy.info(37)
30+
plpy.info()
3031
plpy.info('info',37, [1,2,3])
3132
plpy.notice('notice')
3233
plpy.warning('warning')

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp