[Cascavel-pm] DBI e ODBC em MS Windows e Linux(era: MVC e WxPerl)

Alceu Rodrigues de Freitas Junior glasswalk3r em hotmail.com
Sexta Maio 11 14:41:57 PDT 2007


Oi Daniel,
 
Comentários abaixo,
 
> From: daniel em ruoso.com> Date: Thu, 3 May 2007 14:28:13 +0100> > Qui, 2007-05-03 às 15:53 +0300, Alceu Rodrigues de Freitas Junior> > Se você utilizar a funcionalidade conforme estava escrito> > originalmente, você não teria que executar a query. Bastava um> > prepare() e o ODBC já retornaria os dados sobre as colunas utilizadas> > na query, o que seria ideal em termos de performance (considerando se> > a query for muito lenta, por exemplo). Daria para fazer isso sem um> > execute() ?> > Na verdade isso é porque eu estava usando o mysql para testes. O mysql> só retorna esses dados depois do execute, já outros servidores pedem que> a consulta seja executada. A própria documentação do DBI fala isso:> Provavelmente se funciona no ODBC, vai funcionar sem ODBC também, não> depende do driver, mas sim do servidor...
Eu resolvi fazer um teste antes de aplicar seu patch. Instalei o MySQL 5 para Windows (última versão) e o driver ODBC versão 3.51 também para Windows.
 
Criei uma tabela simples para fazer um teste:
 
CREATE TABLE `filmes` (  `id` int(10) unsigned NOT NULL auto_increment,  `titulo` varchar(80) NOT NULL,  `ano` int(4) unsigned NOT NULL,  `diretor` varchar(80) NOT NULL,  PRIMARY KEY  (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
mysql> desc filmes;+---------+------------------+------+-----+---------+----------------+| Field   | Type             | Null | Key | Default | Extra          |+---------+------------------+------+-----+---------+----------------+| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment || titulo  | varchar(80)      | NO   |     |         |                || ano     | int(4) unsigned  | NO   |     |         |                || diretor | varchar(80)      | NO   |     |         |                |+---------+------------------+------+-----+---------+----------------+4 rows in set (0.02 sec)
 
E rodei a seguinte query no aplicativo:
 
select * from filmes
 
Resultado:
 
id INTEGER 10titulo VARCHAR 80ano INTEGER 4diretor VARCHAR 80
Funcionou do mesmo jeito. Eu imagino então as seguintes possibilidades:
 
1 - A versão que estou usando do MySQL fornece esse recurso sem execute() (qual sua versão do BD no Linux?).
2 - Apenas a implementação do ODBC para Windows fornece esse recurso.
3 - O ODBC está "roubando" e executando a query no final das contas. Como a tabela não tem dado nenhum, o tempo de retorno é rápido.
 
Vou aplicar seu patch, modificá-lo para não fazer um execute() e testar de novo. Depois posto os resultados.
 
[]'s
Alceu
 
_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy!
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070512/4c052674/attachment-0001.html 


Mais detalhes sobre a lista de discussão Cascavel-pm