Index: openacs-4/packages/acs-kernel/acs-kernel.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/acs-kernel.info,v
diff -u -r1.150 -r1.151
--- openacs-4/packages/acs-kernel/acs-kernel.info 28 Jan 2019 21:44:12 -0000 1.150
+++ openacs-4/packages/acs-kernel/acs-kernel.info 8 Feb 2019 17:11:29 -0000 1.151
@@ -9,15 +9,15 @@
f
t
-
+
OpenACS Core Team
Routines and data models providing the foundation for OpenACS-based Web services.
2017-08-06
OpenACS
The OpenACS kernel contains the core datamodel create and drop scripts for such things as objects, groups, partiies and the supporting PL/SQL and PL/pgSQL procedures.
3
-
+
Index: openacs-4/packages/acs-kernel/sql/oracle/utilities-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/oracle/utilities-create.sql,v
diff -u -r1.4 -r1.5
--- openacs-4/packages/acs-kernel/sql/oracle/utilities-create.sql 7 Aug 2017 23:47:56 -0000 1.4
+++ openacs-4/packages/acs-kernel/sql/oracle/utilities-create.sql 8 Feb 2019 17:11:29 -0000 1.5
@@ -36,6 +36,42 @@
function index_exists (
name in varchar2)
return boolean;
+
+ function foreign_key_exists (
+ table IN varchar2,
+ column IN varchar2,
+ reftable IN varchar2,
+ refcolumn IN varchar2)
+ return boolean;
+
+ function unique_exists (
+ table IN varchar2,
+ column IN varchar2,
+ single_p IN boolean default true)
+ return boolean;
+
+ function primary_key_exists (
+ table IN varchar2,
+ column IN varchar2,
+ single_p IN boolean default true)
+ return boolean;
+
+ function not_null_exists (
+ table IN varchar2,
+ column IN varchar2)
+ return boolean;
+
+ function get_default (
+ table IN varchar2,
+ column IN varchar2)
+ return LONG;
+
+ TYPE primary_keys IS TABLE OF varchar2;
+
+ function get_primary_keys(table IN varchar2)
+ return primary_keys
+ PIPELINED;
+
end util;
/
show errors
@@ -168,6 +204,156 @@
return v_exists;
END index_exists;
+ function foreign_key_exists (
+ table IN varchar2,
+ column IN varchar2,
+ reftable IN varchar2,
+ refcolumn IN varchar2)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from user_constraints cons
+ left join user_cons_columns cols on cols.constraint_name = cons.constraint_name
+ left join user_constraints cons_r on cons_r.constraint_name = cons.r_constraint_name
+ left join user_cons_columns cols_r on cols_r.constraint_name = cons.r_constraint_name
+ where cons.constraint_type = 'R'
+ and cons.table_name = foreign_key_exists.table
+ and cols.column_name = foreign_key_exists.column
+ and cons_r.table_name = foreign_key_exists.reftable
+ and cols_r.column_name = foreign_key_exists.refcolumn;
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ end foreign_key_exists;
+
+ function unique_exists (
+ table IN varchar2,
+ column IN varchar2,
+ single_p IN boolean default true)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from all_constraints c
+ join all_cons_columns cc on (c.owner = cc.owner
+ and c.constraint_name = cc.constraint_name)
+ where c.constraint_type = 'U'
+ and c.table_name = unique_exists.table
+ and cc.column_name = unique_exists.column
+ and (not unique_exists.single_p or (
+ select count(*) from all_cons_columns
+ where constraint_name = c.constraint_name) = 1);
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ END unique_exists;
+
+ function primary_key_exists (
+ table IN varchar2,
+ column IN varchar2,
+ single_p IN boolean default true)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from all_constraints c
+ join all_cons_columns cc on (c.owner = cc.owner
+ and c.constraint_name = cc.constraint_name)
+ where c.constraint_type = 'P'
+ and c.table_name = primary_key_exists.table
+ and cc.column_name = primary_key_exists.column
+ and (not primary_key_exists.single_p or (
+ select count(*) from all_cons_columns
+ where constraint_name = c.constraint_name
+ and owner = c.owner) = 1);
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ END primary_key_exists;
+
+ function not_null_exists (
+ table IN varchar2,
+ column IN varchar2)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from all_tab_columns
+ where table_name = not_null_exists.table
+ and column_name = not_null_exists.column
+ and nullable = 'N';
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ END not_null_exists;
+
+ function get_default (
+ table in varchar2,
+ column in varchar2)
+ return long
+ as
+ v_value long;
+
+ begin
+ select data_default into v_value
+ from all_tab_columns
+ where table_name = get_default.table
+ and column_name = get_default.column;
+
+ return v_value;
+ end get_default;
+
+ function get_primary_keys(
+ table in varchar2)
+ return primary_keys
+ as
+ v_rec primary_keys;
+
+ begin
+ select cols.column_name
+ bulk collect into v_rec
+ from all_constraints cons, all_cons_columns cols
+ where cols.table_name = get_primary_keys.table
+ and cons.constraint_type = 'P'
+ and cons.constraint_name = cols.constraint_name
+ and cons.owner = cols.owner
+ order by cols.table_name, cols.position;
+
+ return v_rec;
+ end get_primary_keys;
+
end util;
/
show errors
Index: openacs-4/packages/acs-kernel/sql/oracle/upgrade/upgrade-5.10.0d11-5.10.0d12.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-kernel/sql/oracle/upgrade/upgrade-5.10.0d11-5.10.0d12.sql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/acs-kernel/sql/oracle/upgrade/upgrade-5.10.0d11-5.10.0d12.sql 8 Feb 2019 17:11:29 -0000 1.1
@@ -0,0 +1,353 @@
+PROMPT starting utilities-create.sql....
+--
+-- Rebuild the utilities
+--
+
+create or replace package util
+as
+ function multiple_nextval(
+ v_sequence_name in varchar2,
+ v_count in integer)
+ return varchar2;
+
+ function logical_negation (
+ true_or_false IN varchar2)
+ return varchar2;
+
+ function table_exists (
+ name in varchar2)
+ return boolean;
+
+ function table_column_exists (
+ t_name in varchar2,
+ c_name in varchar2)
+ return boolean;
+
+ function view_exists (
+ name in varchar2)
+ return boolean;
+
+ function index_exists (
+ name in varchar2)
+ return boolean;
+
+ function foreign_key_exists (
+ table IN varchar2,
+ column IN varchar2,
+ reftable IN varchar2,
+ refcolumn IN varchar2)
+ return boolean;
+
+ function unique_exists (
+ table IN varchar2,
+ column IN varchar2,
+ single_p IN boolean default true)
+ return boolean;
+
+ function primary_key_exists (
+ table IN varchar2,
+ column IN varchar2,
+ single_p IN boolean default true)
+ return boolean;
+
+ function not_null_exists (
+ table IN varchar2,
+ column IN varchar2)
+ return boolean;
+
+ function get_default (
+ table IN varchar2,
+ column IN varchar2)
+ return LONG;
+
+ TYPE primary_keys IS TABLE OF varchar2;
+
+ function get_primary_keys(table IN varchar2)
+ return primary_keys
+ PIPELINED;
+
+end util;
+/
+show errors
+
+create or replace package body util
+as
+ -- Retrieves v_count (not necessarily consecutive) nextval values from the
+ -- sequence named v_sequence_name.
+ function multiple_nextval(
+ v_sequence_name in varchar2,
+ v_count in integer
+ )
+ return varchar2
+ is
+ a_sequence_values varchar2(4000);
+ begin
+ execute immediate '
+ declare
+ a_nextval integer;
+ begin
+ for counter in 1..:v_count loop
+ select ' || v_sequence_name || '.nextval into a_nextval from dual;
+ :a_sequence_values := :a_sequence_values || '','' || a_nextval;
+ end loop;
+ end;
+ ' using in v_count, in out a_sequence_values;
+ return substr(a_sequence_values, 2);
+ end;
+
+ function logical_negation (
+ true_or_false IN varchar2)
+ return varchar2
+ as
+ begin
+ IF true_or_false is null THEN
+ return null;
+ ELSIF true_or_false = 'f' THEN
+ return 't';
+ ELSE
+ return 'f';
+ END IF;
+ END logical_negation;
+
+ function table_exists (
+ name IN varchar2)
+ return boolean
+ as
+
+ v_count integer;
+ v_exists boolean;
+
+ begin
+
+ select decode(count(*),0,0,1) into v_count
+ from user_tables where table_name = upper(table_exists.name);
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+
+ END table_exists;
+
+ function table_column_exists (
+ t_name IN varchar2,
+ c_name IN varchar2)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+
+ select decode(count(*),0,0,1) into v_count from user_tab_columns
+ where table_name = upper(table_column_exists.t_name)
+ and column_name = upper(table_column_exists.c_name);
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+
+ END table_column_exists;
+
+ function view_exists (
+ name IN varchar2)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+
+ select decode(count(*),0,0,1) into v_count
+ from user_views where view_name = upper(view_exists.name);
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+
+ END view_exists;
+
+ function index_exists (
+ name IN varchar2)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from user_indexes where index_name = upper(index_exists.name);
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ END index_exists;
+
+ function foreign_key_exists (
+ table IN varchar2,
+ column IN varchar2,
+ reftable IN varchar2,
+ refcolumn IN varchar2)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from user_constraints cons
+ left join user_cons_columns cols on cols.constraint_name = cons.constraint_name
+ left join user_constraints cons_r on cons_r.constraint_name = cons.r_constraint_name
+ left join user_cons_columns cols_r on cols_r.constraint_name = cons.r_constraint_name
+ where cons.constraint_type = 'R'
+ and cons.table_name = foreign_key_exists.table
+ and cols.column_name = foreign_key_exists.column
+ and cons_r.table_name = foreign_key_exists.reftable
+ and cols_r.column_name = foreign_key_exists.refcolumn;
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ end foreign_key_exists;
+
+ function unique_exists (
+ table IN varchar2,
+ column IN varchar2,
+ single_p IN boolean default true)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from all_constraints c
+ join all_cons_columns cc on (c.owner = cc.owner
+ and c.constraint_name = cc.constraint_name)
+ where c.constraint_type = 'U'
+ and c.table_name = unique_exists.table
+ and cc.column_name = unique_exists.column
+ and (not unique_exists.single_p or (
+ select count(*) from all_cons_columns
+ where constraint_name = c.constraint_name) = 1);
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ END unique_exists;
+
+ function primary_key_exists (
+ table IN varchar2,
+ column IN varchar2,
+ single_p IN boolean default true)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from all_constraints c
+ join all_cons_columns cc on (c.owner = cc.owner
+ and c.constraint_name = cc.constraint_name)
+ where c.constraint_type = 'P'
+ and c.table_name = primary_key_exists.table
+ and cc.column_name = primary_key_exists.column
+ and (not primary_key_exists.single_p or (
+ select count(*) from all_cons_columns
+ where constraint_name = c.constraint_name
+ and owner = c.owner) = 1);
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ END primary_key_exists;
+
+ function not_null_exists (
+ table IN varchar2,
+ column IN varchar2)
+ return boolean
+ as
+ v_count integer;
+ v_exists boolean;
+
+ begin
+ select decode(count(*),0,0,1) into v_count
+ from all_tab_columns
+ where table_name = not_null_exists.table
+ and column_name = not_null_exists.column
+ and nullable = 'N';
+
+ if v_count = 1 then
+ v_exists := true;
+ else
+ v_exists := false;
+ end if;
+
+ return v_exists;
+ END not_null_exists;
+
+ function get_default (
+ table in varchar2,
+ column in varchar2)
+ return long
+ as
+ v_value long;
+
+ begin
+ select data_default into v_value
+ from all_tab_columns
+ where table_name = get_default.table
+ and column_name = get_default.column;
+
+ return v_value;
+ end get_default;
+
+ function get_primary_keys(
+ table in varchar2)
+ return primary_keys
+ as
+ v_rec primary_keys;
+
+ begin
+ select cols.column_name
+ bulk collect into v_rec
+ from all_constraints cons, all_cons_columns cols
+ where cols.table_name = get_primary_keys.table
+ and cons.constraint_type = 'P'
+ and cons.constraint_name = cols.constraint_name
+ and cons.owner = cols.owner
+ order by cols.table_name, cols.position;
+
+ return v_rec;
+ end get_primary_keys;
+
+end util;
+/
+show errors