Commit fd768f5446275a1c028878fdc4fabe26bb052ee6
1 parent
e9850d98
Exists in
master
Correção na montagem do SQL em camadas do METAESTAT, evitando usar typecast quan…
…do não for necessário, melhorando assim a performance das camadas
Showing
1 changed file
with
59 additions
and
4 deletions
Show diff stats
classesphp/classe_metaestatinfo.php
| ... | ... | @@ -152,14 +152,20 @@ class MetaestatInfo{ |
| 152 | 152 | */ |
| 153 | 153 | function execSQL($sql,$id="",$convTexto=true){ |
| 154 | 154 | $sql = str_ireplace(array("update","delete","insert","--","drop",";"),"",$sql); |
| 155 | + //error_log("-- "); | |
| 156 | + //error_log("--xxxxxxxxxxx---- SQL: ".$sql); | |
| 155 | 157 | try { |
| 156 | 158 | $q = $this->dbh->query($sql,PDO::FETCH_ASSOC); |
| 157 | 159 | } |
| 158 | 160 | catch (PDOException $e) { |
| 161 | + //error_log("-- "); | |
| 162 | + //error_log("--erro i3geo-- classe_metaestatinfo execSQL: ".$sql); | |
| 159 | 163 | return "Error!: "; |
| 160 | 164 | } |
| 161 | 165 | if($q){ |
| 166 | + //error_log("--xxxxxxxxxxx---- Executando o SQL "); | |
| 162 | 167 | $r = $q->fetchAll(); |
| 168 | + //error_log("--xxxxxxxxxxx---- Executado "); | |
| 163 | 169 | if($convTexto == false){ |
| 164 | 170 | return $r; |
| 165 | 171 | } |
| ... | ... | @@ -182,6 +188,8 @@ class MetaestatInfo{ |
| 182 | 188 | } |
| 183 | 189 | } |
| 184 | 190 | else{ |
| 191 | + //error_log("--"); | |
| 192 | + //error_log("--erro i3geo-- classe_metaestatinfo execSQL"); | |
| 185 | 193 | return false; |
| 186 | 194 | } |
| 187 | 195 | } |
| ... | ... | @@ -352,10 +360,50 @@ class MetaestatInfo{ |
| 352 | 360 | else{ |
| 353 | 361 | $nomeColunaValor = $dados["colunavalor"]; |
| 354 | 362 | } |
| 363 | + //pega o tipo das coluna regiao.".$dadosgeo["identificador"] | |
| 364 | + $propColuna1 = $this->descreveColunasTabela( | |
| 365 | + $dadosgeo["codigo_estat_conexao"], | |
| 366 | + $dados["esquemadb"], | |
| 367 | + $dados["tabela"], | |
| 368 | + $dados["colunaidgeo"] | |
| 369 | + ); | |
| 370 | + $propColuna2 = $this->descreveColunasTabela( | |
| 371 | + $dadosgeo["codigo_estat_conexao"], | |
| 372 | + $dadosgeo["esquemadb"], | |
| 373 | + $dadosgeo["tabela"], | |
| 374 | + $dadosgeo["identificador"] | |
| 375 | + ); | |
| 376 | + if(in_array(array('oid','float4','float8','int2','int4','int8','int16','smallint','integer','real','double precision','bigint','numeric'),$propColuna1["type"])){ | |
| 377 | + $propColuna1 = 'numeric'; | |
| 378 | + } else { | |
| 379 | + $propColuna1 = 'text'; | |
| 380 | + } | |
| 381 | + if(in_array(array('oid','float4','float8','int2','int4','int8','int16','smallint','integer','real','double precision','bigint','numeric'),$propColuna2["type"])){ | |
| 382 | + $propColuna2 = 'numeric'; | |
| 383 | + } else { | |
| 384 | + $propColuna2 = 'text'; | |
| 385 | + } | |
| 386 | + if($propColuna1 == $propColuna2){ | |
| 387 | + $propColuna1 = ""; | |
| 388 | + $propColuna2 = ""; | |
| 389 | + } else { | |
| 390 | + if($propColuna1 == 'numeric'){ | |
| 391 | + $propColuna1 = 'text'; | |
| 392 | + } | |
| 393 | + if($propColuna2 == 'numeric'){ | |
| 394 | + $propColuna2 = 'text'; | |
| 395 | + } | |
| 396 | + if($propColuna1 != ''){ | |
| 397 | + $propColuna1 = '::'.$propColuna1; | |
| 398 | + } | |
| 399 | + if($propColuna2 != ''){ | |
| 400 | + $propColuna2 = '::'.$propColuna2; | |
| 401 | + } | |
| 402 | + } | |
| 355 | 403 | $sqlIntermediario = "SELECT (j.valorcalculado) AS ".$nomeColunaValor.", __COLUNASSEMGEO__". |
| 356 | 404 | " FROM ".$dadosgeo["esquemadb"].".".$dadosgeo["tabela"]." AS regiao ". |
| 357 | 405 | " INNER JOIN ( __SQLDADOS__ ) ". |
| 358 | - " AS j ON j.cod_regiao::text = regiao.".$dadosgeo["identificador"]."::text"; | |
| 406 | + " AS j ON j.cod_regiao" . $propColuna1 . " = regiao.".$dadosgeo["identificador"] . $propColuna2; | |
| 359 | 407 | //inclui os sqls de regioes de niveis inferiores |
| 360 | 408 | if($agregaregiao == true && $direto == false){ |
| 361 | 409 | $hierarquia = $this->regiaoFilhaAoPai($dados["codigo_tipo_regiao"],$codigo_tipo_regiao); |
| ... | ... | @@ -510,7 +558,8 @@ class MetaestatInfo{ |
| 510 | 558 | $this->nomecache = $this->nomecache . $this->nomeRandomico(5); |
| 511 | 559 | } |
| 512 | 560 | $arq = $this->dir_tmp."/".$this->nomecache.".map"; |
| 513 | - | |
| 561 | + //error_log("-- "); | |
| 562 | + //error_log("--xxxxxxxxxxx---- nomecache: ".$arq); | |
| 514 | 563 | if(!file_exists($arq)){ |
| 515 | 564 | $meta = $this->listaMedidaVariavel("",$id_medida_variavel); |
| 516 | 565 | //evita agregar regioes qd nao e necessario |
| ... | ... | @@ -529,6 +578,8 @@ class MetaestatInfo{ |
| 529 | 578 | $suportaWMST, |
| 530 | 579 | $filtro |
| 531 | 580 | ); |
| 581 | + //error_log("-- "); | |
| 582 | + //error_log("--xxxxxxxxxxx---- sqlMedidaVariavel: ".$sql); | |
| 532 | 583 | if(empty($codigo_tipo_regiao)){ |
| 533 | 584 | $d = $this->listaMedidaVariavel("",$id_medida_variavel); |
| 534 | 585 | $codigo_tipo_regiao = $d["codigo_tipo_regiao"]; |
| ... | ... | @@ -555,7 +606,11 @@ class MetaestatInfo{ |
| 555 | 606 | $classes = $this->listaClasseClassificacao($classificacoes[0]["id_classificacao"]); |
| 556 | 607 | } |
| 557 | 608 | if($classes == false){ |
| 609 | + //error_log("-- "); | |
| 610 | + //error_log("--xxxxxxxxxxx---- dadosMedidaVariavel: ".$sql); | |
| 558 | 611 | $valores = $this->dadosMedidaVariavel($id_medida_variavel,$filtro." AND ".$meta["colunavalor"]." > 0 "); |
| 612 | + //error_log("-- "); | |
| 613 | + //error_log("--xxxxxxxxxxx---- dadosMedidaVariavel obtidos "); | |
| 559 | 614 | $valores = array_column($valores,$meta["colunavalor"]); |
| 560 | 615 | $item = $meta["colunavalor"]; |
| 561 | 616 | $classes = array(); |
| ... | ... | @@ -1726,9 +1781,9 @@ class MetaestatInfo{ |
| 1726 | 1781 | */ |
| 1727 | 1782 | function colunasTabela($codigo_estat_conexao,$nome_esquema,$nome_tabela,$tipo="",$tipotratamento="="){ |
| 1728 | 1783 | $colunas = array(); |
| 1729 | - $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name FROM information_schema.columns where table_schema = '$nome_esquema' and table_name = '$nome_tabela'"); | |
| 1784 | + $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name, data_type FROM information_schema.columns where table_schema = '$nome_esquema' and table_name = '$nome_tabela'"); | |
| 1730 | 1785 | if($tipo != ""){ |
| 1731 | - $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name FROM information_schema.columns where table_schema = '$nome_esquema' and udt_name $tipotratamento '$tipo' and table_name = '$nome_tabela'"); | |
| 1786 | + $res = $this->execSQLDB($codigo_estat_conexao,"SELECT column_name as coluna,udt_name, data_type FROM information_schema.columns where table_schema = '$nome_esquema' and udt_name $tipotratamento '$tipo' and table_name = '$nome_tabela'"); | |
| 1732 | 1787 | } |
| 1733 | 1788 | foreach($res as $c){ |
| 1734 | 1789 | $colunas[] = $c["coluna"]; | ... | ... |