Novos Recursos Planejados Para a Versão em um Futuro Próximo
Novas funcionalidade
- Comando como do Oracle
CONNECT BY PRIOR ...
para estruturas de busca tipo árvore (hierárquica) - Adicionar todos os tipos que faltam do SQL-92 e ODBC 3.0.
- Adicionar
SUM(DISTINCT)
. INSERT SQL_CONCURRENT
emysqld --concurrent-insert
para fazer uma inserção concorrente no fim do arquivo se o arquivo tiver lock de leitura.- Permitir a atualização de variáveis nas instruções
UPDATE
. Por exemplo:UPDATE TABLE foo SET @a=a+b,a=@a, b=@a+c
. - Alterar quando as variáveis de usuários são atualizadas e assim pode se usá-las com
GROUP BY
, como no exemplo a seguir:SELECT id, @a:=COUNT(*), SUM(sum_col)/@a FROM nome_tabela GROUP BY id
. - Adicionar a opção
IMAGE
aLOAD DATA INFILE
para não atualizar camposTIMESTAMP
eAUTO_INCREMENT
. - Adicionar a sintaxe
LOAD DATA INFILE ... UPDATE
que funciona assim:- Para tabelas com chaves primárias, se o registro de entrada contém um valor de chave primária, linhas existentes correspondendo às chaves primárias são atualizadas para o restante das colunas de entrada. No entanto, colunas
faltosas
na inserção dos registros de entradas não são alteradas. - Para tabelas com chaves primárias, se um registro de entrada não contém um valor de chave primária ou estrá faltando alguma parte da chave, o registro é tratado como um
LOAD DATA INFILE ... REPLACE INTO
.
- Para tabelas com chaves primárias, se o registro de entrada contém um valor de chave primária, linhas existentes correspondendo às chaves primárias são atualizadas para o restante das colunas de entrada. No entanto, colunas
- Fazer com que
LOAD DATA INFILE
entenda a sintaxe do tipo: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
Isto pode ser usado para saltar colunas extras no arquivo texto, ou atualizar colunas baseadas nas expressões dos dados lidos.
- Novas funções para tyrabalhar com tipos de colunas
SET
:ADD_TO_SET(valor,conjunto)
REMOVE_FROM_SET(valor,conjunto)
- Se você abortar o
MariaDB
no meio de uma consulta, você deve abrir outra conexão e matar a consulta antiga em execução. Alternativamente, deve ser feita um tentativa de detecção deste problema no servidor. - Adicione um interface do mecanismo de armazenamento para informações da tabela assim que você puder usá-la como uma tabela de sistema. Isto seria um pouco mais lento se você pedisse informações sobre todas as tabelas, mas muito flexível.
SHOW INFO FROM tbl_name
para informações básicas das tabelas deve ser implementado. - Permite
SELECT a FROM crash_me LEFT JOIN crash_me2 USING (a)
; neste caso é considerado quea
vem da tabelacrash_me
. - Opções
DELETE
eREPLACE
para a instruçãoUPDATE
(isto deletará registros quando se tiver um erro de chave duplicada durante a atualização). - Altera o formato de
DATETIME
para armazenar frações de segundo. - Possibilitar o uso da nova biblioteca regexp GNU em vez da atual (a biblioteca GNU deve ser muito mais rápida que a antiga).
- Compatibilidade com os padrões, portabilidade e migração
- Não adicionar valores
DEFAULT
automáticos as colunas. Enviar um erro ao usar umINSERT
que não contenha uma coluna que não tenha umDEFAULT
. - Adicionar as funções de agrupamento
ANY()
,EVERY()
eSOME()
. No padrão SQL isto só funciona em colunas booleanas, mas podemos extendê-las para funcionar em qualquer coluna/expressão tratando valores 0 como FALSE e valores diferentes de 0 como TRUE. - Corrigir para que o tipo de
MAX(coluna)
seja o mesmo do tipo da coluna: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;
- Não adicionar valores
- Aumento de velocidade
- Não permitir mais que um número definido de threads façam a recuperação do MyISAM ao mesmo tempo.
- Alterar
INSERT ... SELECT
para usar inserções concorrentes opcionalmente. - Adicionar uma opção para descarregar paginas de chaves para tabelas com delayed keys se elas não forem usados por um tempo.
- Permitir joins em partes de chaves (otimização).
- Adicionar simulação de
pread()
/pwrite()
no Windows para permitir inserções concorrentes. - Um analizador de arquivos de log que possam analizar informações sobre quais tabelas são usadas com mais frequência, a frequência com que joins multi-tables são executados, etc. Isto deve ajudar os usuários a identificar áreas ou projetos de tabelas que podiam ser otimizados para executar consultas muito mais eficientes.
- Internacionalização
- Aprimoramentos de usabilidade
- Retorna os tipos dos campos originais ao se fazer
SELECT MIN(coluna) ... GROUP BY
. - Possibilita especificar
long_query_time
com uma granularidade em microsegundos. - Ligue o código
myisampack
no servidor assim ele poderá realizar operaçõesPACK
eCOMPRESS
. - Adicionar uma cache de chaves temporária durante
INSERT/DELETE/UPDATE
para podermos fazer um recuperação se o índice ficar cheio. - Se você realizar um
ALTER TABLE
em uma tabela que é ligada simbolicamente a outro disco, crie tabelas tenporárias neste disco. - Implementar um tipo
DATE/DATETIME
que trate as informações de fusos horários de forma apropriada e assim lidar com datas em diferentes fusos horários será mais fácil. - Corrigir o configure para se poder compilar todas as bibliotecas (como no
MyISAM
) sem threads. - Permitir variáveis SQL em
LIMIT
, como emLIMIT @a,@b
. - Saída automática do
MariaDB
para um navegador web. LOCK DATABASES
(com diversas opções).- Muito mais variáveis para
SHOW STATUS
. Leitura e atualização de registros. Selects em 1 tabela e select com joins. Número de tabelas na select. Número de consultasORDER BY
eGROUP BY
. mysqladmin copy database novo-banco_dados
; exige que o comandoCOPY
seja adicionado aomysqld
.- Lista de processos deve mostar o número de consultas/threads.
SHOW HOSTS
para xibir informações sobre a cache de nome de máquina.- Alterar o nome de tabelas de string vazias para
NULL
para colunas calculadas. - Não usar
Item_copy_string
em valores numéricos para evitar a conversão number->string->number no casos de:SELECT COUNT(*)*(id+0) FROM nome_tabela GROUP BY id
- Alterar aqueles
ALTER TABLE
que não abortam clientes que executamINSERT DELAYED
. - Colunas referênciadas em uma cláusula
UPDATE
irão conter os valores antigos antes da atualização iniciar.
- Retorna os tipos dos campos originais ao se fazer
- Novos sistemas operacioais.
- Portar os clientes MariaDB para LynxOS.