Caros,
Venho através deste buscar informações de como utilizar o banco de dados PostgreSQL com o Lumine.
Minha dúvida é o seguinte:
Tenho a tabela Log, que fica no esquema seguranca, com uma sequence atribuída no default do campo idlog.
Para eu acessar a tabela, no $_tablename eu atribuí da seguinte maneira: $_tablename = "seguranca.Log". Essa atribuição me garante que eu posso acessar os dados, contudo não há o retorno do valor gerado para o campo idlog.
Vi que há possibilidade de atribuir o nome da sequence através do método _addField, mas mesmo havendo configurado não há retorno do valor gerado para o campo.
Em que parte do processo estou errando?
Desde já grato.
Publicidade
|
|
Page 1 of 1
Utilizar PostgreSQL com Lumine
#2
Posted 04 October 2011 - 09:58 AM
Olá Tiago
Lumine não tem um suporte bacana a esquemas do PostgreSQL no momento.
Se for possível, sugiro a você colocar a tabela no mesmo esquema que as outras.
Aqui na empresa usamos somente o esquema public sem problemas, com mais de 60 entidades.
@braços e fique com Deus!
Lumine não tem um suporte bacana a esquemas do PostgreSQL no momento.
Se for possível, sugiro a você colocar a tabela no mesmo esquema que as outras.
Aqui na empresa usamos somente o esquema public sem problemas, com mais de 60 entidades.
@braços e fique com Deus!
#3
Posted 05 October 2011 - 12:03 PM
Hugo,
Venho através deste propor um "workaround" não muito elegante para recuperar os metadados e valores de sequence no PostgreSQL.
Para isto, parte-se do pressuposto que toda declaração de tabela deve ter o nome do esquema ao qual a mesma pertence (nome_do_esquema.nome_da_tabela).
Espero que seja válido.
Desde já grato.
Segue:
lib/Dialect/PostgreSQL.php
lib/Connection/PostgreSQL.php
Venho através deste propor um "workaround" não muito elegante para recuperar os metadados e valores de sequence no PostgreSQL.
Para isto, parte-se do pressuposto que toda declaração de tabela deve ter o nome do esquema ao qual a mesma pertence (nome_do_esquema.nome_da_tabela).
Espero que seja válido.
Desde já grato.
Segue:
lib/Dialect/PostgreSQL.php
public function getLastId( $campo ) {
$obj = Lumine::factory($this->getTablename());
$field = $obj->_getFieldByColumn($campo);
$obj->destroy();
$tablename = $this->getTablename();
if (preg_match("/./", $tablename)) {
$definition = preg_split("/[\s]*[.][\s]*/", $tablename);
$schema = $definition[0];
$tablename = $definition[1];
}
// se nao tiver sequence
if(empty($field['options']['sequence'])){
$sql = "SELECT currval( s2.nspname || '.' || t2.relname ) AS id
FROM pg_depend AS d
JOIN pg_class AS t1 ON t1.oid = d.refobjid
JOIN pg_class AS t2 ON t2.oid = d.objid
JOIN pg_namespace AS s1 ON s1.oid = t1.relnamespace
JOIN pg_namespace AS s2 ON s2.oid = t2.relnamespace
JOIN pg_attribute AS a ON a.attrelid = d.refobjid AND a.attnum = d.refobjsubid
WHERE t1.relkind = 'r'
AND t2.relkind = 'S'
AND t1.relname = '".$tablename."'
AND attname = '".$campo."'" .
((isset($schema) and strlen($schema) > 0) ? " AND s2.nspname='$schema'" : "");
} else {
$sql = "SELECT currval('".$field['options']['sequence']."') as id";
}
...
lib/Connection/PostgreSQL.php
public function describe($tablename)
{
if (preg_match("/./", $tablename)) {
$definition = preg_split("/[\s]*[.][\s]*/", $tablename);
$schema = $definition[0];
$tablename = $definition[1];
}
$sql = "
SELECT
f.attname AS name,
pg_catalog.format_type(f.atttypid,f.atttypmod) AS type,
CASE
WHEN t.typlen < 0 THEN CASE WHEN f.atttypmod > 0 THEN f.atttypmod - 4 ELSE NULL END
ELSE t.typlen
END as length,
CASE
WHEN p.contype = 'p'
THEN 't'
ELSE 'f'
END AS primarykey,
CASE
WHEN f.atthasdef = 't'
THEN d.adsrc
END AS default,
f.attnotnull AS notnull,
f.attnum AS number,
f.attnum,
CASE
WHEN p.contype = 'u'
THEN 't'
ELSE 'f'
END AS uniquekey,
CASE
WHEN fk.contype = 'f'
THEN g.relname
END AS foreignkey,
CASE
WHEN fk.contype = 'f'
THEN fk.confkey
END AS foreignkey_fieldnum
FROM pg_attribute f
JOIN pg_class c ON c.oid = f.attrelid
JOIN pg_type t ON t.oid = f.atttypid
LEFT JOIN pg_attrdef d ON d.adrelid = c.oid AND d.adnum = f.attnum
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_constraint p ON p.conrelid = c.oid AND f.attnum = ANY ( p.conkey ) AND p.contype IN ('p')
LEFT JOIN pg_constraint fk ON fk.conrelid = c.oid AND f.attnum = ANY ( fk.conkey ) AND fk.contype IN ('f')
LEFT JOIN pg_class AS g ON fk.confrelid = g.oid
WHERE c.relkind = 'r'::char
AND c.relname = '$tablename'
AND f.attnum > 0 "
. ((isset($schema) and strlen($schema) > 0) ? " AND n.nspname='$schema'" : "") .
"ORDER BY number";
...
#4
Posted 05 October 2011 - 02:00 PM
Não achei tão ruim a forma como você fez.
Só alterei um pouco a expressão regular para pegar o schema.tablename.
As alterações estão comitadas no SVN
Estou terminando também outras coisas, e quando houverem mais testes (e peço sua ajuda nisso) colocarei uma versão release.
@braços e fique com Deus!
Só alterei um pouco a expressão regular para pegar o schema.tablename.
As alterações estão comitadas no SVN
Estou terminando também outras coisas, e quando houverem mais testes (e peço sua ajuda nisso) colocarei uma versão release.
@braços e fique com Deus!
#5
Posted 22 November 2011 - 03:42 PM
hufersil, on 05 October 2011 - 02:00 PM, said:
Não achei tão ruim a forma como você fez.
Só alterei um pouco a expressão regular para pegar o schema.tablename.
As alterações estão comitadas no SVN
Estou terminando também outras coisas, e quando houverem mais testes (e peço sua ajuda nisso) colocarei uma versão release.
@braços e fique com Deus!
Só alterei um pouco a expressão regular para pegar o schema.tablename.
As alterações estão comitadas no SVN
Estou terminando também outras coisas, e quando houverem mais testes (e peço sua ajuda nisso) colocarei uma versão release.
@braços e fique com Deus!
Hugo, mudou alguma coisa ao executar a eng. reversa no Lumine ?
Diz no changelog que o Lumine suporta os schemas do postgresql.. Mas aqui pra mim ainda tá do mesmo jeito que a ultima versão.
E essa 1.5.10 não tá disponível pra DL ainda não ?
Share this topic:
Page 1 of 1
Similar Topics
| Topic | Forum | Started By | Stats | Last Post Info | |
|---|---|---|---|---|---|
|
Tragédia com vôo da TAM se espalha por comunidades na Internet
|
Notícias |
Notícias
|
|
|
|
'Carro voador' já pode ser encomendado na web
|
Notícias |
Notícias
|
|
|
|
Video Aula - Cubo 3d com reflexo
Photoshop |
Tutoriais e Artigos |
Farroba
|
|
|
|
Ajuda com galeria de fotos
as com problema |
Flash & ActionScript |
Daniel Campos
|
|
|
|
Facebook faz 5 anos com dúvidas sobre sua rentabilidade
|
Notícias |
Notícias
|
|
|
|
Script Com erro
script nao funciona |
Flash & ActionScript |
pituka
|
|
|
|
Robô com software da Microsoft entra em vendas
|
Notícias |
Notícias
|
|
|
|
IBM avança em tecnologia de supercomputador
|
Notícias |
Notícias
|
|
Publicidade
|
|

Help













