28 aprile 2006

View e order by

In un libro su Oracle che sto leggendo ora ho trovato varie versioni della questione se sia possibile creare una view con una query contenente la clausola "ORDER BY".
Nel libro (di cui vi dirò in futuro) ho trovato prima una versione che permetteva questa sintassi:

create or replace view myview as
(select * from emp)
order by ename;


Alla fine diceva che era possibile anche omettere le parentesi:

create or replace view myview as
select * from emp
order by ename;


A quanto pare nel passato ciò era impossibile, a quanto risulta da questa risposta di Tom Kyte su un newsgroup, ma oggi lo è.
Tom Kyte, nel post citato, spiega anche chiaramente perché l'ordinamento nelle view è fondamentalmente inutile; infatti nella teoria relazionale non se ne fa menzione, e tutte le relazioni vengono trattate come insiemi, in cui l'ordinamento non è rilevante, ma riguarda solo una rappresentazione dei dati.

18 aprile 2006

Oracle verso Linux e l'open-source

Su arstechnica.com è apparso un servizio secondo il quale Oracle sarebbe interessata ad entrare nel mercato delle distribuzioni Linux.
Ellison si è dichiarato interessato a Novell; la collaborazione tra Oracle e Novell recentemente si è rafforzata con la soluzione Accelerator per Oracle 10g.
Molte delle funzioni del sistema operativo sono ora incorporate in Oracle, come ad esempio la gestione dei dati su disco con ASM e 10g; Oracle avrebbe la possiblità di fornire una soluzione completa, nonch´ di confezionare su misura una distribuzione Linux e il suo kernel.

Oracle 9iR2 (9.2.0.4.0) su Dapper Drake!

Ieri, approfittando della festa E del brutto tempo, ho provato ad installare Oracle 9iR2 9.2.0.4.0 su Ubuntu 6 Dapper Drake in prerelease.
Interessante la difficoltà a far partire la JVM per colpa delle librerie libstdc++ troppo aggiornate: ho dovuto installare la prima versione disponibile da APT.
Alla fine la parte più comica è stato il segmentation fault proprio all'inizio della configurazione del DB, dopo l'ultima fase dell'installazione; meno male che avevo fatto creare come da buona usanza gli script di creazione del DB, quindi con qualche tentativo manuale à andato tutto a posto.
Ora mancano le configurazioni dei nomi di rete e del listener.

09 aprile 2006

Concatenazione in mysql

Ho recentemente avuto a che fare con una query in mysql dove le condizioni di join erano espresse nel seguente modo (con ansi-mode attivato):

[...] on
a.col = 'cost' || b.col

Nonostante b.col e a.col fossero indicizzate, l'explain della query portava l'uguaglianza a considerare TUTTE le righe della tabella b, circa 2 milioni.
Incredibilmente la versione seguente funzionava a dovere:

[...] on
a.col = concat('cost', b.col)

smentendo quindi il manuale, dove si afferma che le due versioni sono la stessa cosa (nella pagina: PIPES_AS_CONCAT).