Dado que PostgresPlus Advanced Server 9.3 Beta se basó en la característica comunitaria de PostgreSQL 9.3 Beta, se desatan diversas características de compatibilidad con Oracle introducidas en BETA, como sintaxis estilo Oracle, paquetes, función SQL, etc. A continuación, se muestran algunos de los ejemplos ejecutados en PPAS 9.3 BETA:
Sintaxis de vistas materializadas:
CREATE MATERIALIZED VIEW name [build_clause][create_mv_refresh] AS subquery
Where build_clause is:
BUILD {IMMEDIATE | DEFERRED}
Where create_mv_refresh is:
REFRESH [COMPLETE] [ON DEMAND]
- Construir en diferido – En esta opción, los datos no se completan en MV en el momento de la creación, sino que se completan más tarde usando REFRESH MATERIALIZED VIEW.
- Construir inmediatamente – En esta opción, los datos se completan en MV en el momento de la creación de las tablas (predeterminado)
edb=# create materialized view mymview1
build immediate
as select ename,sum(sal) from emp group by ename;
SELECT 14
edb=# create materialized view mymview2
build deferred
as select ename,sum(sal) from emp group by ename;
SELECT 0
Como podrá deducir de la salida anterior, "CONSTRUIR INMEDIATAMENTE" completa todas las filas en el momento de la creación, mientras que "CONSTRUIR DIFERIDO" simplemente creó un objeto ficticio que debería completarse más tarde con REFRESH MATERIALIZED VIEW.
edb=# refresh materialized view mymview2 ;
REFRESH MATERIALIZED VIEW
edb=# select count(*) from mymview2;
count
-------
14
(1 row)
Los modos REFRESH [COMPLETE] [ON DEMAND] también son compatibles en el momento de la creación de la vista materializada.
Compatibilidad con más funciones Oracle SQL:
REGEXP_SUBSTR()
edb=# SELECT REGEXP_SUBSTR('EDB documentation AT http://www.enterprisedb.com/','http://([[:alnum:]]+){3,4}/?') as RESULT FROM dual;
result
------------
http://www
(1 row)
REGEXP_COUNT()
edb=# select regexp_count('I am in PG-Mailing list','i',1,'i');
regexp_count
--------------
5
(1 row)
REGEXP_INSTR()
edb=# SELECT REGEXP_INSTR('PostgreSQL','P') "position" FROM dual;
position
----------
1
(1 row)
RAWTOHEX() / HEXTORAW ()
edb=# CREATE TABLE test (raw_col RAW(10));
CREATE TABLE
edb=# INSERT INTO test VALUES (HEXTORAW('7D'));
INSERT 0 1
edb=# select * from test ;
raw_col
---------
x7d
(1 row)
edb=# select rawtohex(raw_col) from test ;
rawtohex
----------
7d
(1 row)
Más soporte de Oracle Packages:
DBMS_SCHEDULER
DBMS_RANDOM
DBMS_CRYPTO
DBMS_MVIEW
DBMS_LOCK.sleep
UTL_HTTP
UTL_ENCODE
UTL_URL
Para obtener más detalles, puede consultar las notas de la versión:
http://get.enterprisedb.com/releasenotes/PgPlus_AS_93Beta1_Release_Notes_20130802.pdf