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

Commit38de8df

Browse files
author
Maxim Orlov
committed
Issue#27: Add fix and improve tests.
1 parentcaf9314 commit38de8df

File tree

3 files changed

+289
-16
lines changed

3 files changed

+289
-16
lines changed

‎expected/pg_variables_trans.out

Lines changed: 233 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2032,26 +2032,51 @@ SELECT pgv_free();
20322032

20332033
(1 row)
20342034

2035-
-- Variables should be insertable after pgv_remove
2035+
-- Variables should be insertable after pgv_remove (variable)
20362036
BEGIN;
20372037
SELECT pgv_insert('test', 'x', ROW (1::int, 2::int), TRUE);
20382038
pgv_insert
20392039
------------
20402040

20412041
(1 row)
20422042

2043+
SELECT pgv_select('test', 'x');
2044+
pgv_select
2045+
------------
2046+
(1,2)
2047+
(1 row)
2048+
20432049
SELECT pgv_remove('test', 'x');
20442050
pgv_remove
20452051
------------
20462052

20472053
(1 row)
20482054

2049-
SELECT pgv_insert('test', 'x', ROW (3::int,4::int), TRUE);
2055+
SELECT pgv_insert('test', 'x', ROW (1::int,3::int), TRUE);
20502056
pgv_insert
20512057
------------
20522058

20532059
(1 row)
20542060

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+
20552080
ROLLBACK;
20562081
SELECT * FROM pgv_list() order by package, name;
20572082
package | name | is_transactional
@@ -2065,78 +2090,277 @@ SELECT pgv_insert('test', 'x', ROW (1::int, 2::int), TRUE);
20652090

20662091
(1 row)
20672092

2093+
SELECT pgv_select('test', 'x');
2094+
pgv_select
2095+
------------
2096+
(1,2)
2097+
(1 row)
2098+
20682099
SELECT pgv_remove('test', 'x');
20692100
pgv_remove
20702101
------------
20712102

20722103
(1 row)
20732104

2074-
SELECT pgv_insert('test', 'x', ROW (3::int,4::int), TRUE);
2105+
SELECT pgv_insert('test', 'x', ROW (1::int,3::int), TRUE);
20752106
pgv_insert
20762107
------------
20772108

20782109
(1 row)
20792110

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+
20802130
COMMIT;
20812131
SELECT * FROM pgv_list() order by package, name;
20822132
package | name | is_transactional
20832133
---------+------+------------------
20842134
test | x | t
20852135
(1 row)
20862136

2087-
-- Variables should be insertable after pgv_free
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+
20882196
BEGIN;
20892197
SELECT pgv_insert('test', 'y', ROW (1::int, 2::int), TRUE);
20902198
pgv_insert
20912199
------------
20922200

20932201
(1 row)
20942202

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+
20952268
SELECT pgv_free();
20962269
pgv_free
20972270
----------
20982271

20992272
(1 row)
21002273

2101-
SELECT pgv_insert('test', 'y', ROW (3::int,4::int), TRUE);
2274+
SELECT pgv_insert('test', 'z', ROW (1::int,3::int), TRUE);
21022275
pgv_insert
21032276
------------
21042277

21052278
(1 row)
21062279

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+
21072299
ROLLBACK;
21082300
SELECT * FROM pgv_list() order by package, name;
21092301
package | name | is_transactional
21102302
---------+------+------------------
2111-
test |x | t
2303+
test |y | t
21122304
(1 row)
21132305

21142306
BEGIN;
2115-
SELECT pgv_insert('test', 'y', ROW (1::int, 2::int), TRUE);
2307+
SELECT pgv_insert('test', 'z', ROW (1::int, 2::int), TRUE);
21162308
pgv_insert
21172309
------------
21182310

21192311
(1 row)
21202312

2313+
SELECT pgv_select('test', 'z');
2314+
pgv_select
2315+
------------
2316+
(1,2)
2317+
(1 row)
2318+
21212319
SELECT pgv_free();
21222320
pgv_free
21232321
----------
21242322

21252323
(1 row)
21262324

2127-
SELECT pgv_insert('test', 'y', ROW (3::int, 4::int), TRUE);
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);
21282338
pgv_insert
21292339
------------
21302340

21312341
(1 row)
21322342

2343+
SELECT pgv_select('test', 'z');
2344+
pgv_select
2345+
------------
2346+
(1,3)
2347+
(2,4)
2348+
(2 rows)
2349+
21332350
COMMIT;
21342351
SELECT * FROM pgv_list() order by package, name;
21352352
package | name | is_transactional
21362353
---------+------+------------------
2137-
test |y | t
2354+
test |z | t
21382355
(1 row)
21392356

2357+
SELECT pgv_select('test', 'z');
2358+
pgv_select
2359+
------------
2360+
(1,3)
2361+
(2,4)
2362+
(2 rows)
2363+
21402364
SELECT pgv_free();
21412365
pgv_free
21422366
----------

‎pg_variables.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,9 +404,14 @@ variable_insert(PG_FUNCTION_ARGS)
404404
*/
405405
tupdesc=lookup_rowtype_tupdesc(tupType,tupTypmod);
406406
if (variable->is_deleted)
407+
{
407408
init_record(record,tupdesc,variable);
409+
variable->is_deleted= false;
410+
}
408411
else
412+
{
409413
check_attributes(variable,tupdesc);
414+
}
410415
}
411416

412417
LastTypeId=tupType;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp