List:Bugs« Previous MessageNext Message »
From:Jan Dvorak Date:February 22 2000 11:40am
Subject:SELECT doesn't let an alias to a LOCKed table
View as plain text  
>Description:

A table that has been LOCKed
is not allowed to be aliased in a SELECT.
One gets

    ERROR 1100: Table '...' was not locked with LOCK TABLES

where the ... is the alias, not the name of the table.

This makes it difficult for MySQL users
to wrap SQL code in LOCK TABLES ... UNLOCK TABLES,
because some SELECT:s may break.

>How-To-Repeat:

drop table if exists A;
select "Create a simple table A and put some stuff in it:" as message;
create table A ( id integer unsigned not null primary key );
insert into A values (1), (2);

select "Here it is:" as message;
select * from A;

select "Under a lock, I can still select from the table if I don't alias it:" as mesage;
lock tables A write;
select * from A;
unlock tables;

select "Under a lock, I cannot access it aliased in a select:" as message;
lock tables A write;
select * from A a1, A a2 where a2.id = a1.id;
unlock tables;

>Fix:

The locks should be checked agains the real table, not the alias.

Revise sql/sql_select.cc ?

>Submitter-Id:	jan.dvorak@stripped
>Originator:	jan.dvorak@stripped
>Organization:
MathAn Praha, Ltd.; CZ.
>MySQL support: none
>Synopsis:	SELECT doesn't let an alias to a LOCKed table
>Severity:	non-critical
>Priority:	medium
>Category:	mysql
>Class:		sw-bug
>Release:	mysql-3.23.11-alpha (Source distribution)
>Server: /usr/bin/mysqladmin  Ver 8.0 Distrib 3.23.11-alpha, for pc-linux-gnu on i686
TCX Datakonsult AB, by Monty

Server version		3.23.11-alpha-log
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/lib/mysql/mysql.sock
Uptime:			3 days 20 hours 52 min 46 sec

Threads: 1  Questions: 8991  Slow queries: 0  Opens: 0  Flush tables: 2  Open tables: 0
>Environment:
	
System: Linux medved.mathan.cz 2.2.13 #2 SMP Thu Dec 16 09:47:45 CET 1999 i686 unknown
Architecture: i686

Some paths:  /usr/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc /usr/bin/cc
GCC: Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
Compilation info: CC='gcc'  CFLAGS=''  CXX='c++'  CXXFLAGS=''  LDFLAGS=''
LIBC: 
lrwxrwxrwx   1 root     root           13 Jun  9  1999 /lib/libc.so.6 -> libc-2.1.1.so
-rwxr-xr-x   1 root     root      4016683 Apr 17  1999 /lib/libc-2.1.1.so
-rw-r--r--   1 root     root     19533408 Apr 17  1999 /usr/lib/libc.a
-rw-r--r--   1 root     root          178 Apr 17  1999 /usr/lib/libc.so
Configure command: ./configure  --disable-shared --with-mysqld-ldflags=-all-static
--with-client-ldflags=-all-static --enable-assembler --with-mysqld-user=mysql
--with-unix-socket-path=/var/lib/mysql/mysql.sock --prefix=/ --exec-prefix=/usr
--libexecdir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share
--localstatedir=/var/lib/mysql --infodir=/usr/info --includedir=/usr/include
--mandir=/usr/man --with-charset=czech --without-docs
Perl: This is perl, version 5.005_03 built for i386-linux
Thread
SELECT doesn't let an alias to a LOCKed tableJan Dvorak22 Feb
  • Re: SELECT doesn't let an alias to a LOCKed tableJan Dvorak22 Feb