forked from MaterializeInc/materialize
-
Notifications
You must be signed in to change notification settings - Fork 0
/
portals.pt
139 lines (127 loc) · 3.17 KB
/
portals.pt
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
# Test portal max rows. Note that even though there are two rows returned,
# even after the second execute a portal suspended is returned, not
# command complete.
send
Query {"query": "BEGIN"}
Parse {"query": "VALUES (1), (2)"}
Bind
Execute {"max_rows": 1}
Execute {"max_rows": 1}
Execute {"max_rows": 1}
Execute {"max_rows": 1}
Query {"query": "COMMIT"}
Sync
----
until
ReadyForQuery
ReadyForQuery
ReadyForQuery
----
CommandComplete {"tag":"BEGIN"}
ReadyForQuery {"status":"T"}
ParseComplete
BindComplete
DataRow {"fields":["1"]}
PortalSuspended
DataRow {"fields":["2"]}
PortalSuspended
CommandComplete {"tag":"SELECT 0"}
CommandComplete {"tag":"SELECT 0"}
CommandComplete {"tag":"COMMIT"}
ReadyForQuery {"status":"I"}
ReadyForQuery {"status":"I"}
# Test when max rows > number of total rows.
send
Query {"query": "BEGIN"}
Parse {"query": "VALUES (1), (2)"}
Bind
Execute {"max_rows": 3}
Execute {"max_rows": 3}
Execute {"max_rows": 3}
Query {"query": "COMMIT"}
Sync
----
until
ReadyForQuery
ReadyForQuery
ReadyForQuery
----
CommandComplete {"tag":"BEGIN"}
ReadyForQuery {"status":"T"}
ParseComplete
BindComplete
DataRow {"fields":["1"]}
DataRow {"fields":["2"]}
CommandComplete {"tag":"SELECT 2"}
CommandComplete {"tag":"SELECT 0"}
CommandComplete {"tag":"SELECT 0"}
CommandComplete {"tag":"COMMIT"}
ReadyForQuery {"status":"I"}
ReadyForQuery {"status":"I"}
# Verify correct Close error.
send
Query {"query": "CLOSE c"}
----
until
ReadyForQuery
----
ErrorResponse {"fields":[{"typ":"S","value":"ERROR"},{"typ":"C","value":"34000"},{"typ":"M","value":"cursor \"c\" does not exist"}]}
ReadyForQuery {"status":"I"}
# Verify portal reuse errors.
send
Query {"query": "BEGIN; DECLARE c CURSOR FOR SELECT 1; DECLARE c CURSOR FOR SELECT 1"}
Query {"query": "ROLLBACK"}
----
until
ReadyForQuery
ReadyForQuery
----
CommandComplete {"tag":"BEGIN"}
CommandComplete {"tag":"DECLARE CURSOR"}
ErrorResponse {"fields":[{"typ":"S","value":"ERROR"},{"typ":"C","value":"42P03"},{"typ":"M","value":"cursor \"c\" already exists"}]}
ReadyForQuery {"status":"E"}
CommandComplete {"tag":"ROLLBACK"}
ReadyForQuery {"status":"I"}
send
Query {"query": "BEGIN; DECLARE c CURSOR FOR SELECT 1"}
Parse {"query": "VALUES (1), (2)"}
Bind {"portal": "c"}
Sync
Query {"query": "ROLLBACK"}
----
until
ReadyForQuery
ReadyForQuery
ReadyForQuery
----
CommandComplete {"tag":"BEGIN"}
CommandComplete {"tag":"DECLARE CURSOR"}
ReadyForQuery {"status":"T"}
ParseComplete
ErrorResponse {"fields":[{"typ":"S","value":"ERROR"},{"typ":"C","value":"42P03"},{"typ":"M","value":"cursor \"c\" already exists"}]}
ReadyForQuery {"status":"E"}
CommandComplete {"tag":"ROLLBACK"}
ReadyForQuery {"status":"I"}
send
Query {"query": "BEGIN"}
Parse {"query": "VALUES (1), (2)"}
Bind {"portal": "c"}
Sync
Query {"query": "DECLARE c CURSOR FOR SELECT 1"}
Query {"query": "ROLLBACK"}
----
until
ReadyForQuery
ReadyForQuery
ReadyForQuery
ReadyForQuery
----
CommandComplete {"tag":"BEGIN"}
ReadyForQuery {"status":"T"}
ParseComplete
BindComplete
ReadyForQuery {"status":"T"}
ErrorResponse {"fields":[{"typ":"S","value":"ERROR"},{"typ":"C","value":"42P03"},{"typ":"M","value":"cursor \"c\" already exists"}]}
ReadyForQuery {"status":"E"}
CommandComplete {"tag":"ROLLBACK"}
ReadyForQuery {"status":"I"}