File: check_shared_row_lock.inc

package info (click to toggle)
mariadb 1%3A10.11.13-0%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 607,444 kB
  • sloc: ansic: 2,390,393; cpp: 1,764,452; asm: 378,315; perl: 62,256; java: 39,363; pascal: 38,853; sh: 38,128; sql: 19,830; yacc: 19,727; xml: 10,509; python: 9,780; ruby: 8,544; makefile: 6,130; cs: 5,855; ada: 1,700; lex: 1,207; javascript: 1,039; objc: 80; tcl: 73; awk: 46; php: 22
file content (62 lines) | stat: -rw-r--r-- 1,495 bytes parent folder | download | duplicates (11)
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
#
# SUMMARY
#   Check if statement reading table '$table' takes shared locks
#   on some of its rows.
#
# PARAMETERS 
#   $table          Table for which presence of row locks should be checked.
#   $con_aux        Name of auxiliary connection to be used by this script.
#   $statement      Statement to be checked.
#   $wait_statement Sub-statement which is supposed to acquire locks (should
#                   be the same as $statement for ordinary statements).
#
# EXAMPLE
#    innodb_mysql_lock2.test
#
--disable_result_log
--disable_query_log

connection default;
begin;
--eval select * from $table for update;

connection $con_aux;
begin;
--send_eval $statement;

--enable_result_log
--enable_query_log

connection default;
# Wait until statement is successfully blocked because
# all rows in table are X-locked. This means that at
# least it acquires S-locks on some of rows.
let $wait_condition=
  select count(*) = 1 from information_schema.processlist
  where state in ("Sending data","statistics", "preparing", "updating",
                  "executing", "Searching rows for update") and
        info = "$wait_statement";
--source include/wait_condition.inc

--disable_result_log
--disable_query_log

rollback;

connection $con_aux;
--reap
rollback;

connection default;
--enable_result_log
--enable_query_log

if ($success)
{
--echo Success: '$statement' takes shared row locks on '$table'.
}

if (!$success)
{
--echo Error: '$statement' hasn't taken shared row locks on '$table'!
}