Commit dac54674e421d4c161f5970cfb468dbe0bca8ef9

Authored by Eriksen Costa
1 parent 23c0ad79
Exists in master

Atualizada classe {{{clsBanco_}}} para tornar reescrita de SQL opcional

Showing 1 changed file with 15 additions and 12 deletions   Show diff stats
ieducar/intranet/include/clsBancoPgSql.inc.php
@@ -378,11 +378,13 @@ abstract class clsBancoSQL_ @@ -378,11 +378,13 @@ abstract class clsBancoSQL_
378 /** 378 /**
379 * Executa uma consulta SQL. 379 * Executa uma consulta SQL.
380 * 380 *
381 - * @param string $consulta 381 + * @param string $consulta Consulta SQL.
  382 + * @param bool $reescrever (Opcional) SQL é reescrita para transformar
  383 + * sintaxe MySQL em PostgreSQL.
382 * @return bool|resource FALSE em caso de erro ou o identificador da consulta 384 * @return bool|resource FALSE em caso de erro ou o identificador da consulta
383 * em caso de sucesso. 385 * em caso de sucesso.
384 */ 386 */
385 - public function Consulta($consulta) 387 + public function Consulta($consulta, $reescrever = true)
386 { 388 {
387 $cronometro = new clsCronometro(); 389 $cronometro = new clsCronometro();
388 $cronometro->marca('inicio'); 390 $cronometro->marca('inicio');
@@ -403,20 +405,21 @@ abstract class clsBancoSQL_ @@ -403,20 +405,21 @@ abstract class clsBancoSQL_
403 } 405 }
404 406
405 // Alterações de padrão MySQL para PostgreSQL 407 // Alterações de padrão MySQL para PostgreSQL
  408 + if ($reescrever) {
  409 + // Altera o Limit
  410 + $this->strStringSQL = eregi_replace( "LIMIT[ ]{0,3}([0-9]+)[ ]{0,3},[ ]{0,3}([0-9]+)", "LIMIT \\2 OFFSET \\1", $this->strStringSQL );
406 411
407 - // Altera o Limit  
408 - $this->strStringSQL = eregi_replace( "LIMIT[ ]{0,3}([0-9]+)[ ]{0,3},[ ]{0,3}([0-9]+)", "LIMIT \\2 OFFSET \\1", $this->strStringSQL ); 412 + // Altera selects com YEAR( campo ) ou MONTH ou DAY
  413 + $this->strStringSQL = eregi_replace( "(YEAR|MONTH|DAY)[(][ ]{0,3}(([a-z]|_|[0-9])+)[ ]{0,3}[)]", "EXTRACT( \\1 FROM \\2 )", $this->strStringSQL );
409 414
410 - // Altera selects com YEAR( campo ) ou MONTH ou DAY  
411 - $this->strStringSQL = eregi_replace( "(YEAR|MONTH|DAY)[(][ ]{0,3}(([a-z]|_|[0-9])+)[ ]{0,3}[)]", "EXTRACT( \\1 FROM \\2 )", $this->strStringSQL ); 415 + // Remove os ORDER BY das querys COUNT()
  416 + // Altera os LIKE para ILIKE (ignore case)
  417 + $this->strStringSQL = eregi_replace(" LIKE ", " ILIKE ", $this->strStringSQL);
412 418
413 - // Remove os ORDER BY das querys COUNT()  
414 - // Altera os LIKE para ILIKE (ignore case)  
415 - $this->strStringSQL = eregi_replace(" LIKE ", " ILIKE ", $this->strStringSQL); 419 + $this->strStringSQL = eregi_replace("([a-z_0-9.]+) +ILIKE +'([^']+)'", "to_ascii(\\1) ILIKE to_ascii('\\2')", $this->strStringSQL);
416 420
417 - $this->strStringSQL = eregi_replace("([a-z_0-9.]+) +ILIKE +'([^']+)'", "to_ascii(\\1) ILIKE to_ascii('\\2')", $this->strStringSQL);  
418 -  
419 - $this->strStringSQL = eregi_replace("fcn_upper_nrm", "to_ascii", $this->strStringSQL); 421 + $this->strStringSQL = eregi_replace("fcn_upper_nrm", "to_ascii", $this->strStringSQL);
  422 + }
420 423
421 $temp = explode("'", $this->strStringSQL); 424 $temp = explode("'", $this->strStringSQL);
422 425