1 |
my $database = 'database'; |
2 |
my $table = 'table'; |
3 |
( |
4 |
#{ |
5 |
# error => sub { get('username') ne 'myuser' ? "Access denied -- username must be 'myuser'." : undef }, |
6 |
#}, |
7 |
# |
8 |
# The queries below are sent by various connectors as part of connection establishment. |
9 |
# We provide canned answers for those |
10 |
# |
11 |
{ command => DBIx::MyServer::COM_PING, ok => 1 }, |
12 |
{ command => DBIx::MyServer::COM_INIT_DB, ok => 1 }, |
13 |
{ match => 'SET SQL_AUTO_IS_NULL=0;', ok => 1 }, |
14 |
{ match => 'set autocommit=1', ok => 1 }, |
15 |
{ |
16 |
match => 'SELECT Config, nValue FROM MSysConf', |
17 |
error => ["MSysConf does not exist", 1146, '42S02'], |
18 |
}, |
19 |
{ |
20 |
match => qr{^(select database|show databases)}sio, |
21 |
columns => 'Database', |
22 |
data => $database, |
23 |
}, |
24 |
{ |
25 |
match => qr{^(show tables|show tables like '%')}io, |
26 |
columns => 'Tables_in_'.$database, |
27 |
data => $table, |
28 |
}, |
29 |
{ |
30 |
match => "SHOW TABLES FROM `mysql` like '%'", |
31 |
columns => 'Tables_in_mysql (%)', |
32 |
data => ['user','host'], |
33 |
}, |
34 |
{ |
35 |
match => qr{^show keys from}, |
36 |
columns => 'Keys', |
37 |
data => [], |
38 |
}, |
39 |
|
40 |
{ |
41 |
match => qr{^select.*from\s+nosuchtable(\d*).*$}io, |
42 |
error => sub {[qq{Table '$database.nosuchtable$_[1]' doesn't exist},1146,'42S02']}, |
43 |
}, |
44 |
{ |
45 |
match => qr{^select\s+(.*)\s+from(.*)$}io, |
46 |
columns => sub { |
47 |
if ($_[2]=~/delay(\d+)/) { |
48 |
sleep $1; |
49 |
} |
50 |
return [split(/,/,$_[1])], |
51 |
}, |
52 |
data => sub { |
53 |
my ($cmdline,$cols,$rest) = @_; |
54 |
my $numr=2; |
55 |
my $numc=scalar split(/,/,$cols); |
56 |
if ($rest=~/rows(\d+)/) { |
57 |
$numr=$1; |
58 |
} |
59 |
if ($rest=~/limit\s+(\d+)/i) { |
60 |
$numr = $numr > $1 ? $1 : $numr; |
61 |
} |
62 |
return [ ([ ('datum') x $numc ] ) x $numr ]; |
63 |
}, |
64 |
}, |
65 |
{ |
66 |
match => qr{(.*)}o, |
67 |
error => 'not supported', |
68 |
}, |
69 |
); |