Skip to content

Commit e1a502a

Browse files
authored
Issue #27: Error with transactional pgv_insert/pgv_remove (#28)
Authored-by: Maxim Orlov <[email protected]>
1 parent 13a77d5 commit e1a502a

File tree

4 files changed

+456
-11
lines changed

4 files changed

+456
-11
lines changed

expected/pg_variables_trans.out

+335
Original file line numberDiff line numberDiff line change
@@ -2032,3 +2032,338 @@ SELECT pgv_free();
20322032

20332033
(1 row)
20342034

2035+
-- Variables should be insertable after pgv_remove (variable)
2036+
BEGIN;
2037+
SELECT pgv_insert('test', 'x', ROW (1::int, 2::int), TRUE);
2038+
pgv_insert
2039+
------------
2040+
2041+
(1 row)
2042+
2043+
SELECT pgv_select('test', 'x');
2044+
pgv_select
2045+
------------
2046+
(1,2)
2047+
(1 row)
2048+
2049+
SELECT pgv_remove('test', 'x');
2050+
pgv_remove
2051+
------------
2052+
2053+
(1 row)
2054+
2055+
SELECT pgv_insert('test', 'x', ROW (1::int, 3::int), TRUE);
2056+
pgv_insert
2057+
------------
2058+
2059+
(1 row)
2060+
2061+
SELECT pgv_select('test', 'x');
2062+
pgv_select
2063+
------------
2064+
(1,3)
2065+
(1 row)
2066+
2067+
SELECT pgv_insert('test', 'x', ROW (2::int, 4::int), TRUE);
2068+
pgv_insert
2069+
------------
2070+
2071+
(1 row)
2072+
2073+
SELECT pgv_select('test', 'x');
2074+
pgv_select
2075+
------------
2076+
(1,3)
2077+
(2,4)
2078+
(2 rows)
2079+
2080+
ROLLBACK;
2081+
SELECT * FROM pgv_list() order by package, name;
2082+
package | name | is_transactional
2083+
---------+------+------------------
2084+
(0 rows)
2085+
2086+
BEGIN;
2087+
SELECT pgv_insert('test', 'x', ROW (1::int, 2::int), TRUE);
2088+
pgv_insert
2089+
------------
2090+
2091+
(1 row)
2092+
2093+
SELECT pgv_select('test', 'x');
2094+
pgv_select
2095+
------------
2096+
(1,2)
2097+
(1 row)
2098+
2099+
SELECT pgv_remove('test', 'x');
2100+
pgv_remove
2101+
------------
2102+
2103+
(1 row)
2104+
2105+
SELECT pgv_insert('test', 'x', ROW (1::int, 3::int), TRUE);
2106+
pgv_insert
2107+
------------
2108+
2109+
(1 row)
2110+
2111+
SELECT pgv_select('test', 'x');
2112+
pgv_select
2113+
------------
2114+
(1,3)
2115+
(1 row)
2116+
2117+
SELECT pgv_insert('test', 'x', ROW (2::int, 4::int), TRUE);
2118+
pgv_insert
2119+
------------
2120+
2121+
(1 row)
2122+
2123+
SELECT pgv_select('test', 'x');
2124+
pgv_select
2125+
------------
2126+
(1,3)
2127+
(2,4)
2128+
(2 rows)
2129+
2130+
COMMIT;
2131+
SELECT * FROM pgv_list() order by package, name;
2132+
package | name | is_transactional
2133+
---------+------+------------------
2134+
test | x | t
2135+
(1 row)
2136+
2137+
SELECT pgv_select('test', 'x');
2138+
pgv_select
2139+
------------
2140+
(1,3)
2141+
(2,4)
2142+
(2 rows)
2143+
2144+
-- Variables should be insertable after pgv_remove (package)
2145+
BEGIN;
2146+
SELECT pgv_insert('test', 'y', ROW (1::int, 2::int), TRUE);
2147+
pgv_insert
2148+
------------
2149+
2150+
(1 row)
2151+
2152+
SELECT pgv_select('test', 'y');
2153+
pgv_select
2154+
------------
2155+
(1,2)
2156+
(1 row)
2157+
2158+
SELECT pgv_remove('test');
2159+
pgv_remove
2160+
------------
2161+
2162+
(1 row)
2163+
2164+
SELECT pgv_insert('test', 'y', ROW (1::int, 3::int), TRUE);
2165+
pgv_insert
2166+
------------
2167+
2168+
(1 row)
2169+
2170+
SELECT pgv_select('test', 'y');
2171+
pgv_select
2172+
------------
2173+
(1,3)
2174+
(1 row)
2175+
2176+
SELECT pgv_insert('test', 'y', ROW (2::int, 4::int), TRUE);
2177+
pgv_insert
2178+
------------
2179+
2180+
(1 row)
2181+
2182+
SELECT pgv_select('test', 'y');
2183+
pgv_select
2184+
------------
2185+
(1,3)
2186+
(2,4)
2187+
(2 rows)
2188+
2189+
ROLLBACK;
2190+
SELECT * FROM pgv_list() order by package, name;
2191+
package | name | is_transactional
2192+
---------+------+------------------
2193+
test | x | t
2194+
(1 row)
2195+
2196+
BEGIN;
2197+
SELECT pgv_insert('test', 'y', ROW (1::int, 2::int), TRUE);
2198+
pgv_insert
2199+
------------
2200+
2201+
(1 row)
2202+
2203+
SELECT pgv_select('test', 'y');
2204+
pgv_select
2205+
------------
2206+
(1,2)
2207+
(1 row)
2208+
2209+
SELECT pgv_remove('test');
2210+
pgv_remove
2211+
------------
2212+
2213+
(1 row)
2214+
2215+
SELECT pgv_insert('test', 'y', ROW (1::int, 3::int), TRUE);
2216+
pgv_insert
2217+
------------
2218+
2219+
(1 row)
2220+
2221+
SELECT pgv_select('test', 'y');
2222+
pgv_select
2223+
------------
2224+
(1,3)
2225+
(1 row)
2226+
2227+
SELECT pgv_insert('test', 'y', ROW (2::int, 4::int), TRUE);
2228+
pgv_insert
2229+
------------
2230+
2231+
(1 row)
2232+
2233+
SELECT pgv_select('test', 'y');
2234+
pgv_select
2235+
------------
2236+
(1,3)
2237+
(2,4)
2238+
(2 rows)
2239+
2240+
COMMIT;
2241+
SELECT * FROM pgv_list() order by package, name;
2242+
package | name | is_transactional
2243+
---------+------+------------------
2244+
test | y | t
2245+
(1 row)
2246+
2247+
SELECT pgv_select('test', 'y');
2248+
pgv_select
2249+
------------
2250+
(1,3)
2251+
(2,4)
2252+
(2 rows)
2253+
2254+
-- Variables should be insertable after pgv_free
2255+
BEGIN;
2256+
SELECT pgv_insert('test', 'z', ROW (1::int, 2::int), TRUE);
2257+
pgv_insert
2258+
------------
2259+
2260+
(1 row)
2261+
2262+
SELECT pgv_select('test', 'z');
2263+
pgv_select
2264+
------------
2265+
(1,2)
2266+
(1 row)
2267+
2268+
SELECT pgv_free();
2269+
pgv_free
2270+
----------
2271+
2272+
(1 row)
2273+
2274+
SELECT pgv_insert('test', 'z', ROW (1::int, 3::int), TRUE);
2275+
pgv_insert
2276+
------------
2277+
2278+
(1 row)
2279+
2280+
SELECT pgv_select('test', 'z');
2281+
pgv_select
2282+
------------
2283+
(1,3)
2284+
(1 row)
2285+
2286+
SELECT pgv_insert('test', 'z', ROW (2::int, 4::int), TRUE);
2287+
pgv_insert
2288+
------------
2289+
2290+
(1 row)
2291+
2292+
SELECT pgv_select('test', 'z');
2293+
pgv_select
2294+
------------
2295+
(1,3)
2296+
(2,4)
2297+
(2 rows)
2298+
2299+
ROLLBACK;
2300+
SELECT * FROM pgv_list() order by package, name;
2301+
package | name | is_transactional
2302+
---------+------+------------------
2303+
test | y | t
2304+
(1 row)
2305+
2306+
BEGIN;
2307+
SELECT pgv_insert('test', 'z', ROW (1::int, 2::int), TRUE);
2308+
pgv_insert
2309+
------------
2310+
2311+
(1 row)
2312+
2313+
SELECT pgv_select('test', 'z');
2314+
pgv_select
2315+
------------
2316+
(1,2)
2317+
(1 row)
2318+
2319+
SELECT pgv_free();
2320+
pgv_free
2321+
----------
2322+
2323+
(1 row)
2324+
2325+
SELECT pgv_insert('test', 'z', ROW (1::int, 3::int), TRUE);
2326+
pgv_insert
2327+
------------
2328+
2329+
(1 row)
2330+
2331+
SELECT pgv_select('test', 'z');
2332+
pgv_select
2333+
------------
2334+
(1,3)
2335+
(1 row)
2336+
2337+
SELECT pgv_insert('test', 'z', ROW (2::int, 4::int), TRUE);
2338+
pgv_insert
2339+
------------
2340+
2341+
(1 row)
2342+
2343+
SELECT pgv_select('test', 'z');
2344+
pgv_select
2345+
------------
2346+
(1,3)
2347+
(2,4)
2348+
(2 rows)
2349+
2350+
COMMIT;
2351+
SELECT * FROM pgv_list() order by package, name;
2352+
package | name | is_transactional
2353+
---------+------+------------------
2354+
test | z | t
2355+
(1 row)
2356+
2357+
SELECT pgv_select('test', 'z');
2358+
pgv_select
2359+
------------
2360+
(1,3)
2361+
(2,4)
2362+
(2 rows)
2363+
2364+
SELECT pgv_free();
2365+
pgv_free
2366+
----------
2367+
2368+
(1 row)
2369+

0 commit comments

Comments
 (0)