The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
my $database = 'database';
my $table = 'table';

(

#
# Provide a sample answer to a query in the form of SELECT * FROM `table`
#

	{
		match		=> qr{SELECT .* FROM .*`(.*)`},
		columns		=> ["field1", "field2"],
		data		=> sub { [ [ "value1","value2" ] ] },
	},
	{
		match		=> qr{^SHOW COLUMNS FROM (.*?) FROM (.*?)}io,
		columns		=> ['Field','Type','Null','Key','Default','Extra'],
		data		=> [
					['field1','text','YES','','NULL',''],
					['field2','text','YES','','NULL','']
				]
	},


# 
# The queries below are sent by various connectors as part of connection establishment.
# We provide canned answers for those
#
	{ command		=> DBIx::MyServer::COM_PING, 	ok	=> 1 },
	{ command		=> DBIx::MyServer::COM_INIT_DB,	ok	=> 1 },
	{ match			=> 'SET SQL_AUTO_IS_NULL=0;',	ok	=> 1 },
	{ match			=> 'set autocommit=1',		ok	=> 1 },
	{
		match		=> 'SELECT Config, nValue FROM MSysConf',
		error		=> ["MSysConf does not exist", 1146, '42S02'],
	}, {
		match		=> qr{^(select database|show databases)}sio,
		columns		=> 'Database',
		data		=> $database
	}, {
		match		=> qr{^(show tables|show tables like '%')}io,
		columns		=> 'Tables_in_'.$database,
		data		=> $table
	}, {
		match		=> "SHOW TABLES FROM `mysql` like '%'",
		columns		=> 'Tables_in_mysql (%)',
		data		=> ['user','host']
	}, {
		match		=> qr{^show keys from},
		columns		=> 'Keys',
		data		=> []
	},

#
# Final rule - Forward all other queries as they are to the default DBH
#

	{
		match		=> qr{.*}o,
		error		=> ["Unsupported query"]
	}
);