Bug #78179 [Com]: MariaDB 10.3 broke mysqli::begin_transaction()
| From: | david dot bergeron5 at usherbrooke dot ca | Date: | Thu, 08 Aug 2019 14:00:11 +0000 |
| Subject: | Bug #78179 [Com]: MariaDB 10.3 broke mysqli::begin_transaction() | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-222141@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=78179&edit=1
ID: 78179
Comment by: david dot bergeron5 at usherbrooke dot ca
Reported by: david dot bergeron5 at usherbrooke dot ca
Summary: MariaDB 10.3 broke mysqli::begin_transaction()
Status: Wont fix
Type: Bug
Package: MySQLi related
Operating System: Debian 9
PHP Version: Irrelevant
Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
I don't know if this could help.
If I do a HELP 'lock'; It return this.
And we can see what is supported by the current version of the server.
We should probably ask MySQL and MariaDB to have a more easy to parse definition of theirs
statements.
David
---------------------------------------------------
Syntax:
LOCK TABLES
tbl_name [[AS] alias] lock_type
[, tbl_name [[AS] alias] lock_type] ...
lock_type:
READ [LOCAL]
| [LOW_PRIORITY] WRITE
UNLOCK TABLES
MySQL enables client sessions to acquire table locks explicitly for the
purpose of cooperating with other sessions for access to tables, or to
prevent other sessions from modifying tables during periods when a
session requires exclusive access to them. A session can acquire or
release locks only for itself. One session cannot acquire locks for
another session or release locks held by another session.
Locks may be used to emulate transactions or to get more speed when
updating tables. This is explained in more detail later in this
section.
LOCK TABLES explicitly acquires table locks for the current client
session. Table locks can be acquired for base tables or views. You must
have the LOCK TABLES privilege, and the SELECT privilege for each
object to be locked.
For view locking, LOCK TABLES adds all base tables used in the view to
the set of tables to be locked and locks them automatically. If you
lock a table explicitly with LOCK TABLES, any tables used in triggers
are also locked implicitly, as described in
http://dev.mysql.com/doc/refman/5.5/en/lock-tables-and-triggers.html.
UNLOCK TABLES explicitly releases any table locks held by the current
session. LOCK TABLES implicitly releases any table locks held by the
current session before acquiring new locks.
Another use for UNLOCK TABLES is to release the global read lock
acquired with the FLUSH TABLES WITH READ LOCK statement, which enables
you to lock all tables in all databases. See [HELP FLUSH]. (This is a
very convenient way to get backups if you have a file system such as
Veritas that can take snapshots in time.)
URL: http://dev.mysql.com/doc/refman/5.5/en/lock-tables.html
Previous Comments:
------------------------------------------------------------------------
[2019-08-08 13:36:53] david dot bergeron5 at usherbrooke dot ca
A little bit harsh but I understand.
My only question than is why is mysqlnd is not doing what We ask it to do, not using transaction if
MariaDB support it at version 10.3 ?
From what I can know of the protocol there is nothing in the protocol that say check the version
number before doing a LOCK.
Not that I am a fan of MariaDB to change the versioning schema, but there probably should be a other
way in MySQL and MariaDB to find what features is available in the current server.
------------------------------------------------------------------------
[2019-08-08 13:27:53] andrey@php.net
mysqlnd implements the MySQL Client/Server protocol. If MariaDB doesn't follow the reference
implementation then this is a problem of MariaDB, not of mysqlnd.
I am going to revert this patch.
------------------------------------------------------------------------
[2019-08-02 14:46:45] cmb@php.net
Automatic comment on behalf of cmbecker69@gmx.de
Revision: http://git.php.net/?p=php-src.git;a=commit;h=f9f4a68368406a2ba2bd9fab0494261090183e8e
Log: Fix #78179: MariaDB server version incorrectly detected
------------------------------------------------------------------------
[2019-07-24 13:35:36] cmb@php.net
The following pull request has been associated:
Patch Name: Fix #78179: MariaDB server version incorrectly detected
On GitHub: https://github.com/php/php-src/pull/4472
Patch: https://github.com/php/php-src/pull/4472.patch
------------------------------------------------------------------------
[2019-07-24 12:03:11] cmb@php.net
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8
var_dump($mysqli->server_version); // int(50505)
This also causes 8 test to fail.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=78179
--
Edit this bug report at https://bugs.php.net/bug.php?id=78179&edit=1