segunda-feira, 28 de janeiro de 2008

pgEdit - Um Editor Simplificado MUITO RUIM!

O pgEdit em sua versão 1.2 é uma ferramenta simples para edição de SQL, com integração com o PostgreSQL.


A integração se restringe à realização de conexões com o PostgreSQL (na verdade, com o utilitário psql) para execução dos comandos digitados. Está disponível em Windows e Macintosh. É um editor bem simples, que colore o texto digitado e apresenta algumas boas teclas de atalho.


O problema é que não oferece mais nada além disso. Não apresenta ferramentas para "auto complete" do texto e custa 65 dólares. Pode ser uma boa opção para quem não gosta de utilizar os editores do psql e do pgAdmin III. Sinceramente, não gostei desta ferramenta!

Confira e teste: http://www.pgedit.com/

quarta-feira, 23 de janeiro de 2008

O Comando ALTER DOMAIN

Este comando altera um domínio definindo e excluindo valores padrão (DEFAULT), alterando a verificação se os valores aceitos são nulos, acrescentando e retirando restrições de integridade, owner do domínio e o esquema do domínio.

Permite alterações radicais nos domínios criados/ mantidos.

Sintaxe:

ALTER DOMAIN name { SET DEFAULT expression | DROP DEFAULT }
ALTER DOMAIN name { SET | DROP } NOT NULL
ALTER DOMAIN name ADD domain_constraint
ALTER DOMAIN name DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
ALTER DOMAIN name OWNER TO new_owner
ALTER DOMAIN name SET SCHEMA new_schema

Exemplos:

1 - Alteração de valores DEFAULT do domínio. Se aplica às próximas inserções/ alterações.

CREATE DOMAIN data_dom AS date;
ALTER DOMAIN data_dom SET DEFAULT '01-01-2008';

2 - Exclusão de valor DEFAULT do domínio. Se aplica às próximas inserções/ alterações.

ALTER DOMAIN data_dom DROP DEFAULT;

3 - Ativação e reativação de restrição NOT NULL.

ALTER DOMAIN data_dom SET NOT NULL;
ALTER DOMAIN data_dom DROP NOT NULL;

4 - Criação de restrição de integridade associada ao domínio.

ALTER DOMAIN data_dom ADD CONSTRAINT datachk CHECK (VALUE <> '01-01-2007');;

5 - Alteração de restrição de integridade associada ao domínio.

ALTER DOMAIN data_dom DROP CONSTRAINT datachk RESTRICT;
ALTER DOMAIN data_dom DROP CONSTRAINT datachk CASCADE;

6 - Mudança de owner do domínio.

CREATE USER usuario;
ALTER DOMAIN data_dom OWNER TO usuario;
ALTER DOMAIN data_dom OWNER TO postgres;

7 - Alteração no esquema do domínio.

CREATE SCHEMA schema_domain;
ALTER DOMAIN data_dom SET SCHEMA schema_domain;

segunda-feira, 21 de janeiro de 2008

PostgreSQL ganha o Developer.com Product of the Year 2008

O site developer.com fez uma enquete para escolher as principais tecnologias de desenvolvimento do ano de 2008. Na categoria de ferramentas e add-ins para banco de dados o PostgreSQL foi o grande ganhador, concorrendo com ferramentas livres e proprietárias.

Os finalistas da categoria foram:
  • Hibernate
  • Java DB
  • MySQL
  • Oracle Database 10g
  • PostgreSQL
Votações na internet são questionáveis como melhor metodologia para realizar escolhas técnicas, mas o resultado não deixa de ser uma boa notícia para a comunidade do PostgreSQL, revelando maior ganho de divulgação e credibilidade por parte da ferramenta na comunidade de usuários.

Confira a reportagem original aqui, incluindo os ganhadores das demais categorias.

quarta-feira, 16 de janeiro de 2008

O Comando CREATE DOMAIN...

O comando CREATE DOMAIN permite a criação de domínios de campos que podem ser aplicados a campos das tabelas, restringindo o conjunto de valores aceitos para inclusão e/ou alteração dos dados.

Sintaxe:

CREATE DOMAIN name [ AS ] data_type
[ DEFAULT expression ]
[ constraint [ ... ] ]

onde constraint é:

[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK (expression)

Exemplos:

1 - Criação de domínio simples.

CREATE DOMAIN sexo AS char(1);

2 - Domínio com a cláusula DEFAULT. O DEFAULT indica que 'M' será o valor gravado quando o mesmo não for fornecido e em seu lugar a palavra DEFAULT for empregada.

CREATE DOMAIN sexo_default AS char(1)
DEFAULT 'M';

3 - Domínio com a cláusula CHECK restringindo os sexos a masculino e feminino.

CREATE DOMAIN sexo_values AS char(1)
CHECK ( VALUE IN ('M', 'F'));

4 - Domínio com as cláusulas CHECK, NOT NULL e DEFAULT.

CREATE DOMAIN sexo_full AS char(1)
DEFAULT 'M'
NOT NULL
CHECK ( VALUE IN ('M', 'F'));

5 - Domínio em um campo inteiro.

CREATE DOMAIN idade AS integer
DEFAULT 0
NOT NULL
CHECK ( VALUE > 0);

6 - Domínio em um campo tipo data.

CREATE DOMAIN nascimento AS date
DEFAULT '01/01/1900'
NOT NULL
CHECK ( VALUE > '01/01/1900');

7 - Domínio com uma constraint explicitamente nomeada.

CREATE DOMAIN data_evento AS date
CONSTRAINT valida_data CHECK ( VALUE > '01/01/1900' AND VALUE > '01/01/2099');

8 - Utilização de domínios na criação de uma tabela.

CREATE TABLE pessoa_teste(
cod serial,
nasc nascimento,
idade idade,
sexo sexo_full);

INSERT INTO pessoa_teste (nasc ,idade ,sexo) VALUES ('01/01/2007', 12, 'M');

Criação de Domínios

Domínos são restrições de valores que podem ser aplicadas a campos. Freqüentemente os campos criados nas tabelas aceitam um conjunto restrito de valores e a utilização de domínios permite o controle automatizado das inserções e alterações feitas de modo que não se viole estas regras.

No PostgreSQL é possível criar uma tabela e restringir os valores de seus campos com NOT NULL e restrições do tipo CHECK, dispensando a criação de domínios. No entanto, o seu uso permite reutilizar estas restrições em vários campos com características em comum.

Os comandos relacionados com domínios são:
- CREATE DOMAIN
- ALTER DOMAIN
- DROP DOMAIN

sexta-feira, 11 de janeiro de 2008

Sistema de Concessão de Diárias e Passagens do Governo Federal (SCDP)

Sistema de Concessão de Diárias e Passagens será open source.

São Paulo - Sistema, que era programado em ASP e usava banco de dados SQL Server, será desenvolvido com linguagem Java e usará o Postgre (SIC).
Em 2008, o Sistema de Concessão de Diárias e Passagens (SCDP) do Governo Federal será desenvolvido usando software livre. O Serviço Federal de Processamento de Dados (Serpro) será responsável pela nova versão.

A notícia completa você vê no Idgnow.

Veja mais informações no site do SERPRO.

segunda-feira, 7 de janeiro de 2008

Atualização de segurança: PostgreSQL 8.2.6!!!

EXTRA!!! Liberada atualização de segurança do PostgreSQL! Corrigidas cinco falhas CRÍTICAS que poderiam ser exploradas para ataques. A versão 8.2.6, lançada hoje apresenta coreção para estes bugs.

Os problemas corrigidos foram constatados desde as versões 7.3, 7.4, 8.0, 8.1 e 8.2 do PostgreSQL:

- Index Functions Privilege Escalation (CVE-2007-6600)

- Regular Expression Denial-of-Service (CVE-2007-4772, CVE-2007-6067,
CVE-2007-4769)

- DBLink Privilege Escalation (CVE-2007-6601)

Os usuários das versões 7.* são aconselhados a migrar para releases mais novas, pois o seu ciclo de vida está encerrado. Os instaladores com a correção na versão 7.4 estão disponíveis no site PostgreSQL.org.

Mais detalhes aqui ou no blog do Magnus Hagander.

sexta-feira, 4 de janeiro de 2008

Temos marcadores!!!

Esta manhã coloquei marcadores nos tópicos, uma vez que o grande número de posts pode dificultar pesquisas. Sugestões de como melhor organizar o conteúdo são muito bem vindas!

FELIZ 2008!!!

sexta-feira, 28 de dezembro de 2007

Versão 8.3 será bem mais rápida: primeiro benchmark...

A versão 8.3 do PostgreSQL apresenta uma série de alterações para aumento desempenho. Espera-se que o banco seja claramente mais rápido que as suas versões anteriores. O blog do Stefan Kaltenbrunner fez um benchmark da versão 8.2 com e sem tuning de performance com a 8.3 versão beta 4 com e sem tuning. Os resultados são animadores.

Confira os resultados e não deixe de testar a nova versão você mesmo para questionar ou postar os seus comentários:

http://www.kaltenbrunner.cc/blog/index.php?/authors/1-Stefan-Kaltenbrunner


A figura abaixo deixa uma ótima expectativa quanto aos ganhos de velocidade na próxima versão.

quarta-feira, 26 de dezembro de 2007

Os Comandos EXECUTE e DEALLOCATE

Os Comandos EXECUTE e DEALLOCATE são utilizados respectivamente para executar e desalocar da memória prepared queries.

Sintaxe - EXECUTE:

EXECUTE name [ (parameter [, ...] ) ]

Exemplos - EXECUTE:

1 - EXECUTE sem parâmetros.

EXECUTE consulta_atores;

2 - EXECUTE com um parâmetro.

EXECUTE consulta_cinema (1);

3 - EXECUTE com mais de um parâmetro.

EXECUTE consulta_cinema_intervalo (2,3);

Sintaxe - DEALLOCATE:

DEALLOCATE [ PREPARE ] nameExemplos - DEALLOCATE:

Exemplos - DEALLOCATE:

1 - Deallocate com a cláusula PREPARE opcional.

DEALLOCATE PREPARE consulta_atores;

2 - Deallocate com a sintaxe padrão.

DEALLOCATE consulta_cinema_intervalo ;

O Comando Prepare

Este comando é utilizado para a criação de Prepared Queries no PostgreSQL.

A execução da consulta é feita com o comando EXECUTE e a liberação da memória ocupada pela Prepared Query é feita com o comando DEALLOCATE.

Caso não se utilize DEALLOCATE, a consulta será perdida após o término da sessão.

Sintaxe:

PREPARE name [ (datatype [, ...] ) ] AS statement

Onde:

datatype - tipo de parâmetro recebido pela consulta preparada. Pode haver zero, 1 ou N parâmetros fornecidos através do comando EXECUTE.

Exemplos:

1 - Comando Prepare simples

PREPARE consulta_atores AS
SELECT * FROM cinema, cinema_atores WHERE cinema.id = cinema_atores.id_filme;

2 - Comando Prepare com um parâmetro

PREPARE consulta_cinema (integer) AS
SELECT * FROM cinema WHERE cinema.id = $1;


3 - Comando Prepare com mais de um parâmetro

PREPARE consulta_cinema_intervalo (integer, integer)AS
SELECT * FROM cinema WHERE cinema.id >= $1 AND cinema.id <= $2 ;

Prepared Queries com PostgreSQL

Prepared Queries são consultas preparadas, um recurso que pode ser empregado para aumentar o desempenho das aplicações com PostgreSQL. Uma consulta preparada é processada, gerando um plano de execução que pode ser executado várias vezes em uma sessão, com ganho de performance.

Não é possível compartilhar prepared queries entre várias sessões do PostgreSQL, no entanto cada sessão pode definir suas Prepared Queries.

Principais comandos relacionados:
- Prepare
- Execute
- Deallocate