1my $database = 'database'; 2my $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); 70