LOCK TABLE is not related to being transactional, it's mainly handled on the server level. For example, MyISAM and Federated engines support it just fine.
The following patch add simple support for LOCK TABLE ... READ:
=== modified file 'storage/connect/ha_connect.cc'
— storage/connect/ha_connect.cc 2013-07-23 14:29:16 +0000
+++ storage/connect/ha_connect.cc 2013-08-09 17:47:01 +0000
@@ -2822,7 +2822,7 @@ int ha_connect::external_lock(THD *thd,
if (newmode == MODE_ANY) {
// This is unlocking, do it by closing the table
- if (xp->CheckQueryID())
+ if (xp->CheckQueryID() && thd_sql_command(thd) != SQLCOM_UNLOCK_TABLES)
rc= 2; // Logical error ???
else if (g->Xchk) {
if (!tdbp || *tdbp->GetName() == '#') {
@@ -2985,6 +2985,7 @@ int ha_connect::external_lock(THD *thd,
cras= true;
case SQLCOM_INSERT:
case SQLCOM_LOAD:
+ case SQLCOM_LOCK_TABLES:
case SQLCOM_INSERT_SELECT:
// case SQLCOM_REPLACE:
// case SQLCOM_REPLACE_SELECT:
but making Connect engine to work with LOCK TABLE ... WRITE is a bit more complex.
CONNECT is not transactional and does not support table locking.
This command, as many others, are not supported.
However, a more explicit error message is now issued.