Не разрешать более чем определенному количеству потоков одновременно заниматься восстановлением
MyISAM
-таблиц.Изменение
INSERT ... SELECT
с целью оптимального использования одновременных вставок.Возвращать истинные типы полей при выполнении
SELECT MIN(столбец) GROUP BY
.Множественные результаты.
Сделать возможным задание
long_query_time
с градацией в микросекундах.Cлинковать код
myisampack
прямо в сервер.Перенос кода MySQL на QNX.
Перенос кода MySQL на BeOS.
Перенос MySQL-клиентов на LynxOS.
Добавление временного буферного кэша ключей во время выполнения
INSERT
/DELETE
/UPDATE
, чтобы обеспечить изящное восстановление в случае, если индексный файл окажется полностью заполненным.Если выполняется работа
ALTER TABLE
над таблицей, которая имеет символическую ссылку на другой диск, создавать временные таблицы на этом диске.Реализация типа
DATE
/DATETIME
с корректной обработкой информации о временных зонах, чтобы упростить работу с форматом даты для различных временных зон.FreeBSD и MIT-pthreads; отнимают ли спящие потоки время процессора?
Проверить, занимают ли блокированные потоки время процессора.
Исправить
configure
так, чтобы можно было компилировать все библиотеки (подобноMyISAM
) без потоков.Добавить опцию периодического сброса на диск страниц ключей для таблиц с запрещенными, в случае, если они некоторое время не использовались.
Возможность связывания по частям ключа (проблема оптимизации).
INSERT SQL_CONCURRENT
иmysqld --concurrent-insert
для выполнения одновременной вставки в конец файла, если файл закрыт для чтения.Серверные курсоры.
Проверить, работает ли
lockd
с современными ядрами Linux; если нет, то внести исправления вlockd
! Чтобы это протестировать, необходимо запуститьmysqld
с--enable-locking
и выполнить различные наборы тестов наfork*
. Они не должны выявить никаких ошибок, еслиlockd
работает.Возможность использования SQL-переменных в
LIMIT
, как, например, вLIMIT @a,@b
.Возможность обновления переменных в операторах
UPDATE
. Например:UPDATE TABLE foo SET @a=a+b,a=@a, b=@a+c
.Изменение: если пользовательские переменные обновляются, то сделать так, чтобы их можно было использовать с
GROUP BY
, как в следующем примере:SELECT id, @a:=COUNT(*), SUM(sum_col)/@a FROM table_name GROUP BY id
.Запретить автоматическое внесение
DEFAULT
-значений (значений по умолчанию) в столбцы. Выдавать ошибку в случае использованияINSERT
, не содержащего столбца, для которого не определено значение по умолчанию.Исправить
libmysql.c
так, чтобы две командыmysql_query()
, идущие подряд, могли работать без чтения результатов или с выдачей хорошего сообщения об ошибке, если это все-таки происходит.Проверка, почему функция
ctime()
потоков MIT-pthreads не работает на некоторых FreeBSD системах.Добавление опции
IMAGE
опции кLOAD DATA INFILE
, чтобы не обновлять поляTIMESTAMP
иAUTO_INCREMENT
.Добавляемый синтаксис
LOAD DATE INFILE ... UPDATE
.Для таблиц с первичными ключами: если данные содержат первичный ключ, строки, соответствующие этому первичному ключу, обновляются остальными столбцами. Столбцы, которых нет во входных данных, остаются без изменений.
Для таблиц с первичными ключами, для которых отсутствует некоторая часть ключа во входном потоке данных или которые не имеют первичного ключа, входные данные интерпретируются сейчас как
LOAD DATA INFILE ... REPLACE INTO
.-
Сделать понятный синтаксис
LOAD DATA INFILE
, подобно следующему:LOAD DATA INFILE 'file_name.txt' INTO TABLE tbl_name TEXT_FIELDS (text_field1, text_field2, text_field3) SET table_field1=CONCAT(text_field1, text_field2), table_field3=23 IGNORE text_field3
Такой синтаксис может быть использован для пропуска лишних столбцов в текстовом файле или для обновления столбцов на основе выражений, построенных по прочитанным данным.
-
LOAD DATA INFILE 'file_name' INTO TABLE 'table_name' ERRORS TO err_table_name
. Этот оператор задает запись всех ошибок и предупреждений в таблицуerr_table_name
, которая будет иметь структуру, подобную следующей:line_number - номер строки в файле данных error_message - сообщение об ошибке/предупреждение и, возможно data_line - строка из файла данных
Автоматический вывод из
mysql
в Netscape.LOCK DATABASES
(с различными опциями.)Функции:
ADD_TO_SET(value,set)
иREMOVE_FROM_SET(value,set)
.Добавить использование
t1 JOIN t2 ON ... и t1 JOIN t2 USING ...
В данное время можно использовать этот синтаксис только сLEFT JOIN
.Намного большее количество переменных для
SHOW STATUS
. Фиксирование операций чтения и обновления. Выборки по 1 таблице и выборки по связям. Среднее число таблиц в выборке. Большое число запросовORDER BY
иGROUP BY
.Если вы прерываете выполнение запроса в середине, необходимо открыть другое соединение и убить старый выполнявшийся запрос. В свою очередь, сервер должен распознавать это на своей стороне.
Добавить интерфейс обработчика для табличных данных таким образом, чтобы была возможность использовать его как системную таблицу. Это будет работать несколько медленно в случае запрашивания информации обо всех таблицах, но очень гибко. Должен быть реализован
SHOW INFO FROM tbl_name
для основных данных о таблицах.Сделать возможным
SELECT a FROM crash_me LEFT JOIN crash_me2 USING (a)
; в данном случае подразумевается, чтоa
будет браться из таблицыcrash_me
.Oracle-подобный
CONNECT BY PRIOR ...
для изучения иерархических структур.mysqladmin copy database new-database
; требуется добавить командуCOPY
вmysqld
.Список процессов должен показывать количество запросов/потоков.
SHOW HOSTS
для распечатки информации о кэше имен хостов.Опции
DELETE
иREPLACE
для оператораUPDATE
(оператор с этими опциями будет удалять строки при получении ошибки дублирующихся ключей во время обновления).Изменить формат
DATETIME
, чтобы сохранять порции в секундах.Добавить все недостающие типы ANSI92 и ODBC 3.0.
Изменить имена таблиц с пустых строк на
NULL
для вычисляемых столбцов.Не использовать
Item_copy_string
для числовых значений во избежание преобразований число->строка->число в случае:SELECT COUNT(*)*(id+0) FROM table_name GROUP BY id
Сделать возможным использование новой библиотеки
GNU regexp
вместо текущей (библиотекаGNU
должна быть намного быстрее, чем предыдущая).Сделать так, чтобы
ALTER TABLE
не срывал работуINSERT DELAYED
.Сделать следующее исправление: если на столбцы есть ссылки в выражении
UPDATE
, они будут содержать значения, хранившиеся там до запуска процесса обновления.Добавить эмуляцию
pread()
/pwrite()
под Windows, чтобы сделать возможными одновременные вставки.Разработать анализатор файла журнала для анализа и выдачи информации о том, какие таблицы используются наиболее часто, насколько часто выполняются мультитабличные связи и т.д. Это помогло бы пользователям выбирать такую конструкцию таблиц и областей, которая могла бы быть оптимизирована для выполнения наиболее эффективных запросов.
Добавить
SUM(DISTINCT)
.Добавить групповые функции
ANY()
,EVERY()
иSOME()
. В ANSI SQL эти функции работают только с булевыми столбцами, но мы можем расширить эти функции, чтобы они работали с любыми столбцами/выражениями, применив:value == 0 -> FALSE
иvalue <> 0 -> TRUE
.-
Добиться, чтобы тип для
MAX(column)
был таким же как и тип столбцов:mysql> CREATE TABLE t1 (a DATE); mysql> INSERT INTO t1 VALUES (NOW()); mysql> CREATE TABLE t2 SELECT MAX(a) FROM t1; mysql> SHOW COLUMNS FROM t2;
Придумать хороший синтаксис для оператора, который будет выполнять
UPDATE
над строкой при наличии таковой, иINSERT
новой строки, если строка отсутствует (подобно тому, какREPLACE
работает сINSERT
/DELETE
).