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 378 /**
379 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 384 * @return bool|resource FALSE em caso de erro ou o identificador da consulta
383 385 * em caso de sucesso.
384 386 */
385   - public function Consulta($consulta)
  387 + public function Consulta($consulta, $reescrever = true)
386 388 {
387 389 $cronometro = new clsCronometro();
388 390 $cronometro->marca('inicio');
... ... @@ -403,20 +405,21 @@ abstract class clsBancoSQL_
403 405 }
404 406  
405 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 424 $temp = explode("'", $this->strStringSQL);
422 425  
... ...