• last updated 3 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Don't use expressions for the default value, apparently a nono in Oracle

See e.g. https://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqlj30540.html#rrefsqlj30540__sqlj64478

reduce dependency on adp-level during rendering but get the information directly from the containing objects

Fixes for Oracle 19c: added missing Oracle support

    • -19
    • +72
    /openacs-4/packages/xowiki/tcl/xowiki-procs.tcl
Fixes for Oracle 19c: consistenly rely on uppercasing of the schema names in the called functions

Fixes for Oracle 19c: uppercase consistently in schema queries

All names in the schema data model are in Oracle in uppercase.

Fixes for Oracle 19c: fixed more cases with Problems with Boolean data types

This fixes e.g. the following problem

[16/Feb/2022:20:55:19][3908.7fa5364fa700][-conn:oacs-5-10-0:default:1:9-] Error: SQL(): nsoracle.c:863:OracleExecPLSQLBind: error in `OCIStmtExecute ()': ORA-06550: line 1, column 13:

: PLS-00382: expression is of wrong type

: ORA-06550: line 1, column 7:

: PL/SQL: Statement ignored

:

: SQL: BEGIN :1 := util.foreign_key_exists(table_name => :table_name,column => :column,reftable => :reftable,refcolumn => :refcolumn); END;

[16/Feb/2022:20:55:19][3908.7fa5364fa700][-conn:oacs-5-10-0:default:1:9-] Notice: ### db_with_handle returned error <nsoracle.c:863:OracleExecPLSQLBind: error in `OCIStmtExecute ()': ORA-06550: line 1, column 13:

: PLS-00382: expression is of wrong type

: ORA-06550: line 1, column 7:

: PL/SQL: Statement ignored

:

Fixes for Oracle 19c: output potential errors after command

Fixes for Oracle 19c:

- added special rules for DML differences in Oracle ("MODIFY" option in ALTER TABLE)

- fixed call of ns_pg_bind in Oracle applications

- fixed call of an SQL function returning a table

Fixes for Oracle 19c:

- types defined inside an package cannot be used from the outside;

so utility function get_primary_keys() was not usable

- fix various problems with boolean values

Two sample errors raised before the fix:

[16/Feb/2022:16:12:52][20833.7fa027de8940][-main:oacs-5-10-0-] Error: SQL(): nsoracle.c:863:OracleExecPLSQLBind: error in `OCIStmtExecute ()': ORA-06550: line 1, column 13:

: PLS-00382: expression is of wrong type

: ORA-06550: line 1, column 7:

: PL/SQL: Statement ignored

:

: SQL: BEGIN :1 := util.table_column_exists(t_name => :t_name,c_name => :c_name); END;

16/Feb/2022:18:16:39][27419.7fb7a518a940][-main:oacs-5-10-0-] Error: SQL(): nsoracle.c:863:OracleExecPLSQLBind: error in `OCIStmtExecute ()': ORA-06550: line 1, column 13:

: PLS-00382: expression is of wrong type

: ORA-06550: line 1, column 7:

: PL/SQL: Statement ignored

:

: SQL: BEGIN :1 := util.get_primary_keys(table_name => :table_name); END;

[16/Feb/2022:18:16:39][27419.7fb7a518a940][-main:oacs-5-10-0-] Notice: ### db_with_handle returned error <nsoracle.c:863:OracleExecPLSQLBind: error in 'OCIStmtExecute ()': ORA-06550: line 1, column 13:

: PLS-00382: expression is of wrong type

: ORA-06550: line 1, column 7:

: PL/SQL: Statement ignored

:

: SQL: BEGIN :1 := util.get_primary_keys(table_name => :table_name); END;> for statement

: #:log "sql=BEGIN :1 := util.get_primary_keys($sql_args); END;, sql_command=ns_ora exec_plsql_bind $db $sql 1 """

: return [ ns_ora exec_plsql_bind $db $sql 1 "" ]

:

Fixes for Oracle 19c: fix syntax and handling of boolean values

This change fixes the following problems:

Errors for PACKAGE ACS_EVENT:

LINE/COL ERROR

-------- -----------------------------------------------------------------

3/5 PL/SQL: Declaration ignored

43/39 PLS-00302: component 'LOCATIONREDIRECT_TO_REL_LINK_P' must be

declared

Warning: Package Body created with compilation errors.

Errors for PACKAGE BODY ACS_EVENT:

LINE/COL ERROR

-------- -----------------------------------------------------------------

19/2 PLS-00103: Encountered the symbol "RELATED_LINK_URL" when

expecting one of the following:

) , * & = - + < / > at in is mod remainder not rem

<an exponent (**)> <> or != or ~= >= <= <> and or like like2

like4 likec between || multiset member submultiset

The symbol "," was substituted for "RELATED_LINK_URL" to

continue.

296/29 PLS-00103: Encountered the symbol "(" when expecting one of the

following:

mod <an identifier> <a double-quoted delimited-identifier>

LINE/COL ERROR

-------- -----------------------------------------------------------------

<a bind variable> continue current sql execute forall merge

pipe purge json_exists json_value json_query json_object

json_array

Fixes for Oracle 19c: make query portable to Oracle by replacing USING by explicit ON joins

This fixed the following problem, where the problem is not easy to spot on first sight:

[16/Feb/2022:13:26:09][12845.7efd2d3e1700][-sched:0:41:22-] Error: nsoracle.c:1367:OracleSelect: error in `OCIStmtExecute ()': ORA-00904: "NOTIFICATION_REQUESTS"."USER_ID": invalid identifier

: SQL:

: select notification_id,

: notif_subject,

: notif_text,

: notif_html,

: file_ids,

: user_id,

: request_id,

: type_id,

: delivery_method_id,

: response_id,

: notif_date,

: notif_user,

: acs_permission.permission_p(notification_requests.object_id, !>>>!notification_requests.user_id, 'read') as still_valid_p

: from notifications inner join notification_requests using (type_id, object_id)

: inner join acs_objects on (notification_requests.request_id = acs_objects.object_id)

: left outer join notification_user_map using (notification_id, user_id)

: where sent_date is null

: and creation_date <= notif_date

: and (notif_date is null or notif_date < current_timestamp)

: and interval_id = :interval_id

Fixes for Oracle 19c: fix broken variable references (introduced in oacs-5-9)

Fixes for Oracle 19c: added missing SQL package declaration

Fixes for Oracle 19c: (temporary?) fix for message catalogs

This change fixes the problem that after a fresh installation, all (!)

messages keys are empty. I am not sure what the source of the problem

is, why this has supposedly worked some years before, and whether

there are undesired side-effects of this change. Without this change,

the openacs installation leads to fully broken state.

Fixes for Oracle 19c: replaced "limit" by the portable idiom "fetch ... rows only"

This fixes the following bug in Oracle installations:

: SQL:

: select aml_email_id from acs_mail_lite_from_external

: where processed_p <>'1'

: and release_p <>'1'

: order by priority

: !>>>!limit :email_max_ct

: nsoracle.c:1367:OracleSelect: error in `OCIStmtExecute ()': ORA-00933: SQL command not properly ended

Fixes for Oracle 19c: quick port of missing tables in acs-mail-lite from PostgreSQL

This is q quick port of the table available from PostgreSQL, which

assures that a new instance of OpenACS on Oracle can run without

spitting out frequent error messages. In essence, the sequence

handling was adjusted, and datatype "text" was replaced by

"varchar(4000)" and in one case by "clob". Probably, some of the

lengths and the update operations have to be adjusted.

Fixes for Oracle 19c: boolean types in query

This fixes the following bug for Oracle:

[13/Feb/2022:17:53:36][8701.7f9f62f0b700][-conn:oacs-5-10-0:default:0:0-] Error: nsoracle.c:1367:OracleSelect: error in `OCIStmtExecute ()': ORA-00920: invalid relational operator

:

: SQL:

:

: select p.package_id,

: p.instance_name,

: n.node_id,

: n.name,

: :subsite_url || n.name as url,

: (select count(*)

: from group_approved_member_map m

: where m.rel_type = 'membership_rel'

: and m.group_id = ag.group_id) as num_members,

: (select min(r2.member_state)

: from group_member_map m2,

: membership_rels r2

: where m2.group_id = ag.group_id

: and m2.member_id = :untrusted_user_id

: and r2.rel_id = m2.rel_id) as member_state,

: g.group_id,

: g.join_policy

: from site_nodes n,

: apm_packages p,

: application_groups ag,

: groups g

: where n.parent_id = :subsite_node_id

: and p.package_id = n.object_id

: and p.package_key in ('acs-subsite')

: and ag.package_id = p.package_id

: and g.group_id = ag.group_id

: and (g.join_policy !>>>!!= 'closed' or acs_permission.permission_p(p.package_id, :untrusted_user_id, 'read'))

: order by lower(instance_name)

:

Fixes for Oracle 19c: boolean types in query

This fixes the following bug for Oracle:

': ORA-00920: invalid relational operator

:

: SQL:

: select p.package_id,

: p.instance_name,

: n.node_id,

: n.name

: from site_nodes n,

: apm_packages p,

: apm_package_types t

: where n.parent_id = :subsite_node_id

: and p.package_id = n.object_id

: and t.package_key = p.package_key

: and t.package_type = 'apm_application'

: and acs_permission.permission_p(p.package_id, :user_id, 'read')

: !>>>!order by upper(instance_name)

:

Fixes for Oracle 19c: invalid cast to integer

This fixes the following bug for Oracle:

: invalid positional variable `:', valid values start with 1

: while executing

: "ns_ora 0or1row nsdb0 {

: select acs_permission.permission_p(:object_id, :party_id, :privilege)::integer from dual

: }"

fix editing bug

V: ----------------------------------------------------------------------

Fixes for Oracle 19c boolean types in query

This fixes the following bug for Oracle:

: select u.user_id,

: u.authority_id,

: u.username,

: u.screen_name,

: u.priv_name,

: u.priv_email,

: u.email_verified_p,

: u.email_bouncing_p,

: u.no_alerts_until,

: u.last_visit,

: to_char(last_visit, 'YYYY-MM-DD HH24:MI:SS') as last_visit_ansi,

: u.second_to_last_visit,

: to_char(second_to_last_visit, 'YYYY-MM-DD HH24:MI:SS') as second_to_last_visit_ansi,

: u.n_sessions,

: u.password,

: u.salt,

: u.password_question,

: u.password_answer,

: u.password_changed_date,

: extract(day from current_timestamp - password_changed_date) as password_age_days,

: u.auth_token,

: mm.rel_id,

: mr.member_state !>>>!= 'approved' as registered_user_p,

: mr.member_state

: from users u

: left join group_member_map mm on mm.member_id = u.user_id

: and mm.group_id = mm.container_id

: and mm.group_id = :registered_users_group_id

: and mm.rel_type = 'membership_rel'

: left join membership_rels mr on mr.rel_id = mm.rel_id

: where u.user_id = :user_id

improved error message

Fixes for Oracle 19c boolean types in query

This fixes the following bug for Oracle:

: SQL:

: select locale

: from ad_locales l

: where language = :language

: and enabled_p

: !>>>!and (default_p or not exists (select 1 from ad_locales

: where language = :language

: and locale <> l.locale))

:

Subst commands as well, include the artifact is in the websocket message

Formatting changes

Port the downstream only websocket enpoint

file proctoring-websocket.tcl was initially added on branch oacs-5-10.

file websocket.tcl was initially added on branch oacs-5-10.

file websocket.adp was initially added on branch oacs-5-10.

Rename the file so it actually has an extension