MINI MINI MANI MO
Rem
Rem Copyright (c) 2011, 2016, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem rqsys.sql - RQuery create SYStem objects
Rem
Rem DESCRIPTION
Rem Creates system objects for RQuery
Rem
Rem NOTES
Rem The script takes the following parameters:
Rem arg1 - LIBORE path
Rem arg2 - LIBRQE path
Rem
Rem MODIFIED (MM/DD/YY)
Rem qinwan 10/11/16 - add version for datastoreobjects
Rem qinwan 10/07/16 - change session_user to current_user
Rem qinwan 08/13/15 - dspriv2: share datastore
Rem qinwan 07/07/15 - dspriv1: update datastore metadata for 1.5
Rem qinwan 01/15/15 - patch datastore view
Rem ealvarad 09/03/14 - LRG 12492145: Start and increment options for
Rem object sequence explicitily set.
Rem paboyoun 04/01/14 - modify current owner of datastore views
Rem qinwan 09/16/13 - support empty datastore
Rem qinwan 10/26/12 - bug fix 14808516
Rem demukhin 10/03/12 - prj: no roles
Rem qinwan 09/25/12 - persistence R prj
Rem demukhin 09/10/12 - prj: auto connect
Rem demukhin 08/27/12 - prj: BLOB image
Rem qinwan 08/20/12 - update datastore table schema
Rem qinwan 07/25/12 - update name length
Rem qinwan 07/18/12 - add object type rqROBJECT
Rem schakrab 04/05/12 - add objects for rqRFuncEval
Rem vsharanh 03/08/12 - ported to Windows
Rem schakrab 02/14/12 - change attribute types of FreqType
Rem to BINARY_DOUBLE
Rem schakrab 02/14/12 - add ore_freq_reglst
Rem demukhin 12/06/11 - embedded layer security review changes
Rem demukhin 11/23/11 - security review changes
Rem paboyoun 11/15/11 - enquote names in DBMS_STAT_FUNCS
Rem demukhin 09/27/11 - merge tmrqsys.sql and rqesys.sql into rqsys.sql
Rem demukhin 09/21/11 - scrollable cursor
Rem demukhin 09/14/11 - XML output
Rem demukhin 09/02/11 - multitable support for regression
Rem vsharanh 09/01/11 - fixed rqCvmP(w,n), w is double now
Rem vsharanh 08/29/11 - merging back Windows installed changes
Rem demukhin 07/15/11 - remove rqEval
Rem paboyoun 07/12/11 - add matrix OCI operations
Rem paboyoun 07/11/11 - create faster union all functionality for
Rem ore.frame
Rem vsharanh 07/06/11 - fixing SQL defs for oreStat*.c defined fns
Rem vsharanh 07/05/11 - add new stat rqHarmonic function
Rem demukhin 06/30/11 - chunking for serialiazed objects
Rem dgolovas 06/28/11 - add new stat functions
Rem paboyoun 06/27/11 - use cursor for crossproduct
Rem paboyoun 06/24/11 - pipeline crossprod function
Rem paboyoun 06/23/11 - refactor to new matrix framework
Rem vsharanh 06/23/11 - changing output signature of ore_freq_*pipe
Rem functions
Rem paboyoun 06/21/11 - add DBMS_STAT_FUNCS for ks tests
Rem dgolovas 06/15/11 - add new stat functions
Rem demukhin 05/26/11 - grouping rqEval
Rem paboyoun 04/25/11 - add crossprod support
Rem demukhin 04/13/11 - add rq metadata tables
Rem vsharanh 04/07/11 - update for pipeline FREQ functions
Rem demukhin 03/29/11 - add rqPredict
Rem demukhin 03/26/11 - add rqRow table function
Rem demukhin 03/17/11 - add ore_freq
Rem demukhin 03/01/11 - add norm family
Rem demukhin 02/25/11 - add apply support
Rem demukhin 01/28/11 - Created
Rem
--***************************************************************************--
--* (*) SEQUENCES *--
--***************************************************************************--
CREATE SEQUENCE rq$object_seq START WITH 1 INCREMENT BY 1 NOCACHE;
CREATE SEQUENCE rq$datastore_seq start with 1001;
--***************************************************************************--
--* (*) TABLES *--
--***************************************************************************--
CREATE GLOBAL TEMPORARY TABLE rqForeach (
id NUMBER)
ON COMMIT PRESERVE ROWS PARALLEL;
-- create user Meta Data Table for persistent R object
-- datastore attributes
CREATE TABLE RQ$DATASTORE (
dsID NUMBER
CONSTRAINT pk_dsid PRIMARY KEY, -- datastore ID
dsowner VARCHAR2(128), -- schema name
dsname VARCHAR2(128), -- datastore name
cdate DATE, -- datastore creation date
description VARCHAR2(2000), -- datastore description
tabname VARCHAR2(128) DEFAULT NULL, -- underlying table name
CONSTRAINT uk_dsname UNIQUE (dsowner, dsname) -- unique key
);
-- R object attributes and association with datastore
CREATE TABLE RQ$DATASTOREOBJECT (
objID NUMBER
CONSTRAINT pk_objid PRIMARY KEY, -- R object ID
dsID NUMBER NOT NULL
CONSTRAINT fk_dsid REFERENCES RQ$DATASTORE ON DELETE CASCADE,
objname VARCHAR2(128), -- R object name
class VARCHAR2(128), -- R object class
objsize NUMBER, -- R object size
length NUMBER, -- R object length
nrow NUMBER, -- number of row if data.frame
ncol NUMBER, -- number of columns if data.frame
ver VARCHAR2(16), -- ORE version
CONSTRAINT uk_dsobjname UNIQUE (dsID, objname) -- unique key
);
CREATE INDEX RQ$DATASTOREOBJECT_IDX ON RQ$DATASTOREOBJECT(dsID);
-- relation b/w R object in datastore and referenced db objects
CREATE TABLE RQ$DATASTOREREFDBOBJECT (
objID NUMBER NOT NULL
CONSTRAINT fk_objid REFERENCES RQ$DATASTOREOBJECT ON DELETE CASCADE,
refobjID NUMBER NOT NULL,
CONSTRAINT uk_objrefID UNIQUE (objID, refobjID) -- unique key
);
-- relation b/w ORE object in R session and referenced db objects
CREATE TABLE RQ$OREREFDBOBJECT (
sessionowner VARCHAR2(128) NOT NULL,
oresession NUMBER NOT NULL,
refobjID NUMBER NOT NULL
);
CREATE INDEX RQ$OREREFDBOBJECT_IDX ON RQ$OREREFDBOBJECT(oresession, refobjID);
-- Referenced db objects meta info
CREATE TABLE RQ$REFDBOBJECT (
refobjID NUMBER
CONSTRAINT pk_refid PRIMARY KEY, -- referenced db object ID
refobjname VARCHAR2(128),
refobjtype VARCHAR2(128),
refobjparm VARCHAR2(128),
refobjowner VARCHAR2(128)
);
CREATE INDEX RQ$REFDBOBJECT_IDX ON
RQ$REFDBOBJECT(refobjname, refobjtype, refobjowner);
-- DataStore Grant meta info
CREATE TABLE RQ$DATASTOREACCESS (
dsId NUMBER
CONSTRAINT fk_dsaccessid REFERENCES RQ$DATASTORE ON DELETE CASCADE,
grantee VARCHAR2(128),
CONSTRAINT uk_dsaccessid UNIQUE (dsId, grantee) -- unique key
);
--***************************************************************************--
--* (*) VIEWS *--
--***************************************************************************--
-- db-wide datastore info
create view RQ$DATASTORELIST AS
select dsowner, dsname, count(objname) as nobj, sum(objsize) as dssize,
cdate, description, tabname
from RQ$DATASTORE ds, RQ$DATASTOREOBJECT obj
where ds.dsID = obj.dsID(+)
group by dsowner, dsname, cdate, description, tabname;
-- db-wide object info in each datastore
create view RQ$DATASTORESUMMARY AS
select dsowner, dsname, objname, class, objsize, length, nrow, ncol,
objID, ver
from RQ$DATASTORE ds, RQ$DATASTOREOBJECT obj
where ds.dsID = obj.dsID
order by dsowner, dsname, objname;
-- object internal info in current user's datastores
create view RQ$USER_DATASTORE_ROBJECTS AS
select dsowner, dsname, objname, objID
from RQ$DATASTORESUMMARY
where dsowner=SYS_CONTEXT('USERENV', 'CURRENT_USER');
-- refdbobject internal info in current user
create view RQ$USER_DATASTORE_REFDBOBJECTS AS
select dsowner, dsname, objname, b.objID objID,
refobjowner, refobjname, refobjtype, b.refobjID refobjID
from RQ$DATASTORESUMMARY a, RQ$DATASTOREREFDBOBJECT b, RQ$REFDBOBJECT c
where a.objID = b.objID AND b.refobjID = c.refobjID AND
a.dsowner=SYS_CONTEXT('USERENV', 'CURRENT_USER');
-- current user datastore info
create view RQUSER_DATASTORELIST AS
select dsname, nobj, dssize, cdate, description
from RQ$DATASTORELIST
where dsowner=SYS_CONTEXT('USERENV', 'CURRENT_USER');
-- object info in current user datastore
create view RQUSER_DATASTORECONTENTS AS
select dsname, objname, class, objsize, length, nrow, ncol
from RQ$DATASTORESUMMARY
where dsowner=SYS_CONTEXT('USERENV', 'CURRENT_USER');
-- current user datastores
create view USER_RQ_DATASTORES AS
select dsname, nobj, dssize, cdate, description,
NVL2(tabname, 'T', 'F') grantable
from RQ$DATASTORELIST
where dsowner=SYS_CONTEXT('USERENV', 'CURRENT_USER');
create view ALL_RQ_DATASTORES AS
(select SYS_CONTEXT('USERENV', 'CURRENT_USER') dsowner, t.*
from USER_RQ_DATASTORES t
UNION
select distinct dsowner, dsname, nobj, dssize, cdate, description,
NVL2(tabname, 'T', 'F') grantable
from RQ$DATASTORELIST, ALL_TAB_PRIVS
where (GRANTEE = SYS_CONTEXT('USERENV', 'CURRENT_USER') OR
GRANTEE = 'PUBLIC') and
TABLE_SCHEMA = dsowner and table_name = tabname and
PRIVILEGE = 'SELECT');
create view ALL_RQ_DATASTORE_CONTENTS AS
select b.dsowner, b.dsname, objname, class, objsize, length, nrow, ncol
from ALL_RQ_DATASTORES a, RQ$DATASTORESUMMARY b
where a.dsowner = b.dsowner and a.dsname = b.dsname;
create view RQ$ALL_DATASTORE_ROBJECTS AS
select b.dsowner, b.dsname, b.objname, b.objID, b.ver
from ALL_RQ_DATASTORES a, RQ$DATASTORESUMMARY b
where a.dsowner = b.dsowner and a.dsname = b.dsname;
create view USER_RQ_DATASTORE_PRIVS AS
select dsname, grantee
from RQ$DATASTORELIST, USER_TAB_PRIVS
where dsowner = SYS_CONTEXT('USERENV', 'CURRENT_USER') and
dsowner = owner and tabname = table_name and PRIVILEGE = 'SELECT';
--***************************************************************************--
--* (*) LIBRARIES *--
--***************************************************************************--
CREATE LIBRARY rq$lib AS '&&1';
/
CREATE LIBRARY rqeLib AS '&&2';
/
--***************************************************************************--
--* (*) OBJECT PRIVILEGES *--
--***************************************************************************--
GRANT SELECT ON rqForeach TO PUBLIC;
GRANT SELECT ON rq$object_seq TO PUBLIC;
GRANT SELECT ON RQ$USER_DATASTORE_ROBJECTS TO PUBLIC;
GRANT SELECT ON RQ$USER_DATASTORE_REFDBOBJECTS TO PUBLIC;
GRANT SELECT ON RQUSER_DATASTORELIST TO PUBLIC;
GRANT SELECT ON RQUSER_DATASTORECONTENTS TO PUBLIC;
GRANT SELECT ON USER_RQ_DATASTORES TO PUBLIC;
GRANT SELECT ON ALL_RQ_DATASTORES TO PUBLIC;
GRANT SELECT ON ALL_RQ_DATASTORE_CONTENTS TO PUBLIC;
GRANT SELECT ON USER_RQ_DATASTORE_PRIVS TO PUBLIC;
GRANT SELECT ON RQ$ALL_DATASTORE_ROBJECTS TO PUBLIC;
--***************************************************************************--
--* (*) PUBLIC SYNONYMS *--
--***************************************************************************--
create public synonym rqForeach for rqsys.rqForeach;
create public synonym rq$object_seq for rqsys.rq$object_seq;
create public synonym RQ$USER_DATASTORE_ROBJECTS
for rqsys.RQ$USER_DATASTORE_ROBJECTS;
create public synonym RQ$USER_DATASTORE_REFDBOBJECTS
for rqsys.RQ$USER_DATASTORE_REFDBOBJECTS;
create public synonym RQUSER_DATASTORELIST for rqsys.RQUSER_DATASTORELIST;
create public synonym RQUSER_DATASTORECONTENTS
for rqsys.RQUSER_DATASTORECONTENTS;
create public synonym USER_RQ_DATASTORES
for rqsys.USER_RQ_DATASTORES;
create public synonym ALL_RQ_DATASTORES
for rqsys.ALL_RQ_DATASTORES;
create public synonym ALL_RQ_DATASTORE_CONTENTS
for rqsys.ALL_RQ_DATASTORE_CONTENTS;
create public synonym USER_RQ_DATASTORE_PRIVS
for rqsys.USER_RQ_DATASTORE_PRIVS;
--***************************************************************************--
--* end of file rqsys.sql *--
--***************************************************************************--
OHA YOOOO