MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/R/server/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/R/server/rqsys.sql

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