Commit dac54674e421d4c161f5970cfb468dbe0bca8ef9
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 |