1
0
mirror of https://github.com/MariaDB/server.git synced 2025-05-05 16:59:35 +03:00

1130 Commits

Author SHA1 Message Date
kostja@bodhi.local
9b05865be4 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.local:/opt/local/work/mysql-5.1-runtime-merge
2006-08-14 16:30:57 +04:00
kostja@bodhi.local
5dfdc8bfce Manual merge 5.0->5.1. Post-merge fixes. 2006-08-14 13:27:11 +04:00
kostja@bodhi.local
04c97488f9 Merge bodhi.local:/opt/local/work/tmp_merge
into  bodhi.local:/opt/local/work/mysql-5.1-runtime-merge
2006-08-12 21:06:51 +04:00
patg@govinda.patg.net
4371749996 Merge pgalbraith@bk-internal.mysql.com:/home/bk/mysql-5.1
into  govinda.patg.net:/home/patg/mysql-build/mysql-5.1-engines-merge
2006-08-10 14:28:39 -07:00
holyfoot/hf@mysql.com/deer.(none)
de7e53d531 bug #20910 (NOT NULL reported as NULL for TIMESTAMP)
we intentionally reported that for TIMESTAMPS, which isn't right
2006-08-08 13:34:27 +05:00
rburnett@bk-internal.mysql.com
22c77e87a2 Merge bk-internal.mysql.com:/data0/bk/mysql-5.0
into  bk-internal.mysql.com:/data0/bk/mysql-5.0-kt
2006-08-03 16:54:06 +02:00
kostja@bodhi.local
1b145118b9 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge
2006-08-02 21:54:10 +04:00
ingo/istruewing@chilla.local
c20030ef26 Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  chilla.local:/home/mydev/mysql-5.1-bug18775
2006-08-02 18:10:51 +02:00
ingo/istruewing@chilla.local
8e4c36ad4a Bug#18775 - Temporary table from alter table visible to other threads
Continued implementation of WL#1324 (table name to filename encoding)

The intermediate (not temporary) files of the new table
during ALTER TABLE was visible for SHOW TABLES. These
intermediate files are copies of the original table with
the changes done by ALTER TABLE. After all the data is
copied over from the original table, these files are renamed 
to the original tables file names. So they are not temporary 
files. They persist after ALTER TABLE, but just with another 
name.

In 5.0 the intermediate files are invisible for SHOW TABLES
because all file names beginning with "#sql" were suppressed.

This failed since 5.1.6 because even temporary table names were
converted when making file names from them. The prefix became
converted to "@0023sql". Converting the prefix during SHOW TABLES
would suppress the listing of user tables that start with "#sql".

The solution of the problem is to continue the implementation of
the table name to file name conversion feature. One requirement
is to suppress the conversion for temporary table names.

This change is straightforward for real temporary tables as there
is a function that creates temporary file names.

But the generated path names are located in TMPDIR and have no
relation to the internal table name. This cannot be used for
ALTER TABLE. Its intermediate files need to be in the same
directory as the old table files. And it is necessary to be
able to deduce the same path from the same table name repeatedly.

Consequently the intermediate table files must be handled like normal
tables. Their internal names shall start with tmp_file_prefix
(#sql) and they shall not be converted like normal table names.

I added a flags parameter to all relevant functions that are
called from ALTER TABLE. It is used to suppress the conversion
for the intermediate table files.

The outcome is that the suppression of #sql in SHOW TABLES
works again. It does not suppress user tables as these are
converted to @0023sql on file level.

This patch does also fix ALTER TABLE ... RENAME, which could not 
rename a table with non-ASCII characters in its name.

It does also fix the problem that a user could create a table like
`#sql-xxxx-yyyy`, where xxxx is mysqld's pid and yyyy is the thread
ID of some other thread, which prevented this thread from running 
ALTER TABLE.

Some of the above problems are mentioned in Bug 1405, which can
be closed with this patch.

This patch does also contain some minor fixes for other forgotten
conversions. Still known problems are reported as bugs 21370,
21373, and 21387.
2006-08-02 17:57:06 +02:00
evgen@sunlight.local
ef4f149536 Merge sunlight.local:/local_work/tmp_merge-5.0-opt-mysql
into  sunlight.local:/local_work/tmp_merge-5.1-opt-mysql
2006-07-30 00:33:24 +04:00
kroki/tomash@moonlight.intranet
c867301b0d Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug16581
2006-07-28 18:07:47 +04:00
kroki/tomash@moonlight.intranet
d06001b1a2 Bug#16581: deadlock: server and client both read from connection in
'conc_sys' test

Concurrent execution of SELECT involing at least two INFORMATION_SCHEMA
tables, DROP DATABASE statement and DROP TABLE statement could have
resulted in stalled connection for this SELECT statement.

The problem was that for the first query of a join there was a race
between select from I_S.TABLES and DROP DATABASE, and the error (no
such database) was prepared to be send to the client, but the join
processing was continued.  On second query to I_S.COLUMNS there was a
race with DROP TABLE, but this error (no such table) was downgraded to
warning, and thd->net.report_error was reset.  And so neither result
nor error was sent to the client.

The solution is to stop join processing once it is clear we are going
to report a error, and also to downgrade to warnings file system errors
like 'no such database' (unless we are in the 'SHOW' command), because
I_S is designed not to use locks and the query to I_S should not abort
if something is dropped in the middle.

No test case is provided since this bug is a result of a race, and is
timing dependant.  But we test that plain SHOW TABLES and SHOW COLUMNS
give a error if there is no such database or a table respectively.
2006-07-28 15:06:23 +04:00
anozdrin/alik@booka.
b7f403b546 Fix for BUG#16211: Stored function return type for strings is ignored.
Fix for BUG#16676: Database CHARSET not used for stored procedures

The problem in BUG#16211 is that CHARSET-clause of the return type for
stored functions is just ignored.

The problem in BUG#16676 is that if character set is not explicitly
specified for sp-variable, the server character set is used instead
of the database one.

The fix has two parts:

  - always store CHARSET-clause of the return type along with the
    type definition in mysql.proc.returns column. "Always" means that
    CHARSET-clause is appended even if it has not been explicitly
    specified in CREATE FUNCTION statement (this affects BUG#16211 only).

    Storing CHARSET-clause if it is not specified is essential to avoid
    changing character set if the database character set is altered in
    the future.

    NOTE: this change is not backward compatible with the previous releases.

  - use database default character set if CHARSET-clause is not explicitly
    specified (this affects both BUG#16211 and BUG#16676).

    NOTE: this also breaks backward compatibility.
2006-07-27 17:57:43 +04:00
gluh@mysql.com/gluh.(none)
e47b22c6a2 Bug#20543 select on information_schema strange warnings, view, different schemas/users
The fix is: if user has privileges to view fields and user has any
(insert,select,delete,update) privileges on underlying view 
then 'show fields' and select from I_S.COLUMNS table are sucsessful.
2006-07-25 17:23:25 +05:00
igor@olga.mysql.com
69856b29b2 Fixed bug #21231: wrong results for a simple query with a
a non-correlated single-row subquery over information schema.

The function get_all_tables filling all information schema
tables reset lex->sql_command to SQLCOM_SHOW_FIELDS. After
this the function could evaluate partial conditions related to
some columns. If these conditions contained a subquery over
information schema it led to a wrong evaluation and a wrong 
result set.
This bug was already fixed in 5.1.
This patch follows the way how it was done in 5.1 where
the value of lex->sql_command is set to SQLCOM_SHOW_FIELDS
in get_all_tables only for the calls of the function 
open_normal_and_derived_tables and is restored after these
calls.
2006-07-24 19:05:46 -07:00
igor@olga.mysql.com
66ecb7df81 Fixed bug #18925: wrong results for queries with
subqueries on information schema that use MIN/MAX aggregation.

Execution of some correlated subqueries may set the value
of null_row to 1 for tables used in the subquery.
If the the subquery is on information schema it causes
rejection of any row for the following executions of
the subquery in the case when an optimization filtering
by some condition is applied.

The fix restores the value of the null_row flag for 
each execution of a subquery on information schema.
2006-07-22 12:44:54 -07:00
mikael/pappa@dator5.(none)
ab461c8933 Merge dator5.(none):/home/pappa/bug20340
into  dator5.(none):/home/pappa/bug20733
2006-07-22 10:13:47 -04:00
gluh@myoffice.izhnet.ru
f76aec6d90 Merge myoffice.izhnet.ru:/usr/home/gluh/MySQL/tmp_merge
into  myoffice.izhnet.ru:/usr/home/gluh/MySQL/5.1
2006-07-18 18:43:55 +05:00
mikael/pappa@dator5.(none)
4b71f42dd3 BUG#20340: NODEGROUP in information_schema.partitions integer =>
error in error log when "default is put into it
NODEGROUP string to cater for "default" in it
2006-07-18 09:33:40 -04:00
kostja@bodhi.local
f536f361d9 Merge bodhi.local:/opt/local/work/tmp_merge
into  bodhi.local:/opt/local/work/mysql-5.1-runtime-merge-5.0
2006-07-15 01:04:51 +04:00
cmiller@zippy.(none)
512d1c7ff3 Merge zippy.(none):/home/cmiller/work/mysql/merge/tmp_merge
into  zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.1
2006-07-10 17:20:39 -04:00
andrey@lmy004.
2bdd872e5f WL #3337 (Event scheduler new architecture)
Cut Nr. 8.

All tests pass.

Separated Event_scheduler into Event_queue and Event_scheduler.
Added new Event_scheduler_ng which is the new scheduler and is used
system-wide. Will be moved to the event_scheduler.cc in the future.
Using Event_timed in Event_queue as well as cloned during execution.
Next step is to have Event_worker_data which will be used during execution
and will take ::compile()/::execute() out of Event_timed.
2006-07-04 18:44:35 +02:00
gluh@mysql.com
d2b378d57f Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/gluh/MySQL/Merge/5.0-kt
2006-07-03 13:19:18 +05:00
kroki@mysql.com
1bcf6b1d09 Bug#20230: routine_definition is not null
SHOW CREATE PROCEDURE and SHOW CREATE FUNCTION are fixed as well as
INFORMATION_SCHEMA.ROUTINES.ROUTINE_NAME.
2006-06-30 00:21:55 +04:00
gluh@eagle.intranet.mysql.r18.ru
a230166f28 Fix for bug#13934 Silent truncation of table comments
Table comment: issue a warning(error in traditional mode) if length of comment > 60 symbols
Column comment: issue a warning(error in traditional mode) if length of comment > 255 symbols
Table 'comment' is changed from char* to LEX_STRING
2006-06-29 18:39:34 +05:00
gluh@eagle.intranet.mysql.r18.ru
f9214221fc Bug#19671 mysql_list_fields returns incorrect table name for VIEWs
After view onening real view db name and table name are placed
into table_list->view_db & table_list->view_name.
Item_field class does not handle these names properly during 
intialization of Send_field.
The fix is to use new class 'Item_ident_for_show' 
which sets correct view db name and table name for Send_field.
2006-06-29 16:52:46 +05:00
andrey@lmy004.
f92454082a Merge 2006-06-28 15:54:09 +02:00
andrey@lmy004.
03e0a2315e WL#3337 (Events new architecture)
Cut number 6. Move code from sql_show.cc to event_db_repository.cc
that more belongs to the latter.
2006-06-28 14:22:14 +02:00
andrey@lmy004.
9309fae9b5 WL#3337 (Events new architecture)
5th cut, moved DB related code to Event_db_repository and
updated accordingly the remanining code.
Moved change/restore_security_context() to class THD
Removed events_priv.h
Next step is to reorganize create/update_event() and parsing for them.
But probably some other refactoring could be done in the meanwhile.
The changes so far pass the test suite.
2006-06-28 01:28:03 +02:00
andrey@lmy004.
e5936fce6c first cut of WL#3337 (New event scheduler locking infrastructure).
Infrastructure built. Added the  foreseen files and change Makefile.am/CMakeLists.txt
accordingly.
2006-06-27 08:48:50 +02:00
konstantin@mysql.com
5e0a692723 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/opt/local/work/mysql-5.1-runtime
2006-06-26 18:45:46 +04:00
andrey@lmy004.
23340f3fdd Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into lmy004.:/work/mysql-5.1-runtime-bug16992
2006-06-26 12:22:13 +02:00
anozdrin@alik.
44de151e3c Merge mysql.com:/mnt/raid/alik/MySQL/devel/5.1-tree
into  mysql.com:/mnt/raid/alik/MySQL/devel/5.1-rt-bug20294
2006-06-22 18:59:57 +04:00
andrey@lmy004.
c59a58c4ba fix for bug#16992 (Events: Information_schema troubles)
Introduced EVENTS.EVENT_DEFINITION, like ROUTINES.ROUTINE_DEFINITION
Hence, the contents of the current EVENTS.EVENT_BODY become the contents
of EVENT_DEFINITION. EVENT_BODY will contain always, for now, "SQL" (wo
quotes).
2006-06-22 13:01:08 +02:00
monty@mysql.com
b8ab496057 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/my/mysql-5.1
2006-06-22 12:21:41 +03:00
monty@narttu.mysql.fi
20c00662eb Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/my/mysql-5.1
2006-06-21 13:24:56 +03:00
andrey@lmy004.
45598df7d4 manual merge 2006-06-20 17:14:36 +02:00
rburnett@bk-internal.mysql.com
2d6fb900eb Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-kt
2006-06-20 14:51:32 +02:00
monty@mysql.com
be269e56d2 SHOW STATUS does not anymore change local status variables (except com_show_status). Global status variables are still updated.
SHOW STATUS are not anymore put in slow query log because of no index usage.

Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command()
This simplifies code and allows us to remove some if statements all over the code.

Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands.
This allowed some overall simplifaction when testing sql_command.

Fixes bugs:
Bug#10210: running SHOW STATUS increments counters it shouldn't
Bug#19764: SHOW commands end up in the slow log as table scans
2006-06-20 13:20:32 +03:00
rburnett@bk-internal.mysql.com
3edd9cc9c4 Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-kt
2006-06-19 17:50:11 +02:00
svoj@may.pils.ru
6124539b0f Merge april:devel/BitKeeper/mysql-5.1-engines
into  may.pils.ru:/home/svoj/devel/mysql/BUG18036/mysql-5.1
2006-06-19 19:57:42 +05:00
serg@serg.mylan
d00b56549c String::set(double) and set(longlong) -> set_real() and set_int()
fix Field::store(double) being used instead of store(longlong)

NB: overloading functions is evil
2006-06-16 12:17:20 +02:00
ingo@mysql.com
4c52d3ddf1 Bug#18775 - Temporary table from alter table visible to other threads
The intermediate (not temporary) files of the new table
during ALTER TABLE was visible for SHOW TABLES. These
intermediate files are copies of the original table with
the changes done by ALTER TABLE. After all the data is
copied over from the original table, these files are renamed 
to the original tables file names. So they are not temporary 
files. They persist after ALTER TABLE, but just with another 
name.

Normal GRANT checking takes place for the intermediate table.
Everyone who can see the original table (and hence the final
table) can also see the intermediate table. But noone else.

In 5.0 the intermediate files are invisible for SHOW TABLES
because all file names beginning with "#sql" were suppressed.
In 5.1 temporary files are created in TMPDIR, so that they
don't appear in the database directories. Also in 5.1 a
translation between table names and file names is done. The
tmp_file_prefix on file level is now "@0023sql".

The suppression of files starting with tmp_file_prefix is
still in place, but still only files beginning with "#sql"
were suppressed.

I do now translate tmp_file_prefix from table name to file
name before comparing it with the files in a directory.
This suppresses the intermediate files again.

No test case. The test case looks so that a reasonable big
table is altered while a second thread runs SHOW TABLES.
This in itself would be possible to do, but on slow machines
it would add too much time to the test suite, while on fast
machines the ALTER TABLE might have finished before SHOW
TABLES looks at the directory. Even if there might be a good
balance for todays machines, one day the test would become
void as the intermediate table would not be seen even with
the bug in place. I added a test script to the bug report.
It can easily be changed so that it uses a table size that
is appropriate for the test machine.
2006-06-16 09:02:03 +02:00
rburnett@bk-internal.mysql.com
384fa9b67e Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-kt
2006-06-15 14:56:00 +02:00
mikael@c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se
fea2fa6239 Merge c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/clean-mysql-5.1
into  c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/bug16002
2006-06-14 19:41:33 -04:00
mikael@c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se
e91454f89e Merge c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/clean-mysql-5.1
into  c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/bug16002
2006-06-14 09:12:07 -04:00
gluh@mysql.com
a1020c6e4d post-merge fix 2006-06-14 10:54:56 +05:00
rburnett@bk-internal.mysql.com
0bce11244b Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-kt
2006-06-13 17:44:44 +02:00
holyfoot@deer.(none)
f1ed5a40d6 bug #16832 (ALGORITHM missed in VIEW's information schema) 2006-06-13 17:23:43 +05:00
mikael@c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se
744bb5d7bb Merge c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/clean-mysql-5.1
into  c-0409e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/bug19695
2006-06-12 14:42:07 -04:00