@@ -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+