File: dbms_pipe_session_B.out

package info (click to toggle)
orafce 4.16.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,856 kB
  • sloc: ansic: 12,914; sql: 8,984; lex: 1,054; makefile: 131; yacc: 82; python: 7; sh: 2
file content (248 lines) | stat: -rw-r--r-- 6,296 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
\set ECHO none
 receive_message 
-----------------
               0
(1 row)

-- Receives messages sent via an implicit pipe
SELECT receiveFrom('named_pipe');
NOTICE:  RECEIVE 11: Message From Session A
NOTICE:  RECEIVE 12: 01-01-2013
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 9: 12345.6789
NOTICE:  RECEIVE 9: 12345
NOTICE:  RECEIVE 9: 99999999999
NOTICE:  RECEIVE 23: \201
NOTICE:  RECEIVE 24: (2,rob)
 receivefrom 
-------------
 
(1 row)

-- Bulk receive messages
SELECT bulkReceive();
NOTICE:  RECEIVE 11: Message From Session A
NOTICE:  RECEIVE 12: 01-01-2013
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 9: 12345.6789
NOTICE:  RECEIVE 9: 12345
NOTICE:  RECEIVE 9: 99999999999
NOTICE:  RECEIVE 23: \201
NOTICE:  RECEIVE 24: (2,rob)
 bulkreceive 
-------------
 
(1 row)

-- Receives messages sent via an explicit private pipe under the same user
-- 'regress_pipe_test_owner'
SELECT dbms_pipe.receive_message('recv_private1_notifier');
 receive_message 
-----------------
               0
(1 row)

SELECT receiveFrom('private_pipe_1');
NOTICE:  RECEIVE 11: Message From Session A
NOTICE:  RECEIVE 12: 01-01-2013
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 9: 12345.6789
NOTICE:  RECEIVE 9: 12345
NOTICE:  RECEIVE 9: 99999999999
NOTICE:  RECEIVE 23: \201
NOTICE:  RECEIVE 24: (2,rob)
 receivefrom 
-------------
 
(1 row)

-- Switch user to 'regress_pipe_test_other'
DROP USER IF EXISTS regress_pipe_test_other;
NOTICE:  role "regress_pipe_test_other" does not exist, skipping
CREATE USER regress_pipe_test_other;
SET SESSION AUTHORIZATION regress_pipe_test_other;
-- Try to receive messages sent via an explicit private pipe under the user
-- 'regress_pipe_test_other' who is not the owner of pipe.
-- insufficient privileges in case of 'private_pipe_2'.
SELECT dbms_pipe.receive_message('recv_private2_notifier');
 receive_message 
-----------------
               0
(1 row)

SELECT receiveFrom('private_pipe_2');
ERROR:  insufficient privilege
-- These are explicit private pipes created using create_pipe(text,integer)
-- and create_pipe(text)
SELECT dbms_pipe.receive_message('recv_public1_notifier');
 receive_message 
-----------------
               0
(1 row)

SELECT receiveFrom('public_pipe_3');
NOTICE:  RECEIVE 11: Message From Session A
NOTICE:  RECEIVE 12: 01-01-2013
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 9: 12345.6789
NOTICE:  RECEIVE 9: 12345
NOTICE:  RECEIVE 9: 99999999999
NOTICE:  RECEIVE 23: \201
NOTICE:  RECEIVE 24: (2,rob)
 receivefrom 
-------------
 
(1 row)

SELECT dbms_pipe.receive_message('recv_public2_notifier');
 receive_message 
-----------------
               0
(1 row)

SELECT receiveFrom('public_pipe_4');
NOTICE:  RECEIVE 11: Message From Session A
NOTICE:  RECEIVE 12: 01-01-2013
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 13: Tue Jan 01 09:00:00 2013 PST
NOTICE:  RECEIVE 9: 12345.6789
NOTICE:  RECEIVE 9: 12345
NOTICE:  RECEIVE 9: 99999999999
NOTICE:  RECEIVE 23: \201
NOTICE:  RECEIVE 24: (2,rob)
 receivefrom 
-------------
 
(1 row)

-- Switch back to user 'regress_pipe_test_owner'
SET SESSION AUTHORIZATION regress_pipe_test_owner;
DROP USER regress_pipe_test_other;
-- Tests receive_message(text)
SELECT checkReceive1('pipe_name_1');
NOTICE:  RECEIVE checking one-argument send_message()
 checkreceive1 
---------------
 
(1 row)

SELECT checkReceive1('pipe_name_2');
NOTICE:  RECEIVE checking two-argument send_message()
 checkreceive1 
---------------
 
(1 row)

-- Tests dbms_pipe.db_pipes view
SELECT name, items, "limit", private, owner
FROM dbms_pipe.db_pipes
WHERE name LIKE 'private%'
ORDER BY name;
      name      | items | limit | private |          owner          
----------------+-------+-------+---------+-------------------------
 private_pipe_1 |     0 |    10 | t       | regress_pipe_test_owner
 private_pipe_2 |     9 |    10 | t       | regress_pipe_test_owner
(2 rows)

-- Tests dbms_pipe.__list_pipes(); attribute size is not included
-- since it can be different across runs.
SELECT name, items, "limit", private, owner
FROM dbms_pipe.__list_pipes()  AS  (name varchar, items int4, siz int4, "limit" int4, private bool, owner varchar)
WHERE name <> 'pipe_name_4'
ORDER BY 1;
      name      | items | limit | private |          owner          
----------------+-------+-------+---------+-------------------------
 pipe_name_3    |     1 |       | f       | 
 private_pipe_1 |     0 |    10 | t       | regress_pipe_test_owner
 private_pipe_2 |     9 |    10 | t       | regress_pipe_test_owner
 public_pipe_3  |     0 |    10 | f       | 
 public_pipe_4  |     0 |    10 | f       | 
(5 rows)

-- Tests remove_pipe(text)
SELECT dbms_pipe.remove_pipe('private_pipe_1');
 remove_pipe 
-------------
 
(1 row)

SELECT dbms_pipe.remove_pipe('private_pipe_2');
 remove_pipe 
-------------
 
(1 row)

SELECT dbms_pipe.remove_pipe('public_pipe_3');
 remove_pipe 
-------------
 
(1 row)

SELECT dbms_pipe.remove_pipe('public_pipe_4');
 remove_pipe 
-------------
 
(1 row)

SELECT dbms_pipe.purge('pipe_name_1');
 purge 
-------
 
(1 row)

SELECT dbms_pipe.purge('pipe_name_2');
 purge 
-------
 
(1 row)

-- Receives drop table notification from session A via 'pipe_name_3'
SELECT  dropTempTable();
 droptemptable 
---------------
 
(1 row)

SELECT dbms_pipe.purge('pipe_name_3');
 purge 
-------
 
(1 row)

-- tests unique_session_name() (uses 'pipe_name_4')
SELECT checkUniqueSessionNameB();
 checkuniquesessionnameb 
-------------------------
 f
(1 row)

SELECT dbms_pipe.purge('pipe_name_4');
 purge 
-------
 
(1 row)

DROP FUNCTION receiveFrom(text);
DROP FUNCTION checkReceive1(text);
DROP FUNCTION checkUniqueSessionNameB();
DROP FUNCTION bulkReceive();
DROP FUNCTION dropTempTable();
-- Perform a recieve on removed pipe resulting on timeout
SELECT dbms_pipe.receive_message('public_pipe_4',2);
 receive_message 
-----------------
               1
(1 row)

SELECT dbms_pipe.purge('public_pipe_4');
 purge 
-------
 
(1 row)

SET SESSION AUTHORIZATION DEFAULT;
DROP USER regress_pipe_test_owner;