:: DEVELOPER ZONE
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 e mysqld --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 a LOAD DATA INFILE para não atualizar
campos TIMESTAMP e AUTO_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.
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 mysql 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 que a vem da tabela crash_me.
Opções DELETE e REPLACE para a instrução UPDATE (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 um INSERT que não contenha uma coluna que não tenha
um DEFAULT.
Adicionar as funções de agrupamento ANY(), EVERY() e
SOME(). 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;
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ções PACK e COMPRESS.
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 em LIMIT @a,@b.
Saída automática do mysql 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 consultas ORDER BY e GROUP BY.
mysqladmin copy database novo-banco_dados; exige que o comando
COPY seja adicionado ao mysqld.
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 executam INSERT DELAYED.
Colunas referênciadas em uma cláusula UPDATE irão conter
os valores antigos antes da atualização iniciar.
Novos sistemas operacioais.
Portar os clientes MySQL para LynxOS.
© 1995-2005 MySQL AB. All rights reserved.
