Forum .LRN Q&A: Another obscure but nasty bug

Collapse
Posted by Andrew Grumet on
We're getting ORA-03113: end-of-file on communication channel on requests to /register/awaiting-email-verification.

ORA-03113's are particularly nasty because they kill the db connection.

The problem appears to be with this query...

select member_state, email, rowid as row_id
from cc_users
where user_id = :user_id and
email_verified_p = 'f'
I think the issue is that CC_USERS is a VIEW and that selecting ROWID from a view *should* be a problem.

Fooling around in sql*plus, I find that some queries involving cc_users.rowid cause Oracle to die with ORA-03113 and others don't. I haven't dug much further than that. But here's a pretty interesting result:

SQL> select c.rowid as row_id, u.rowid as row2_id
    from cc_users c, users u where c.user_id = u.user_id and rownum 
< 1000;
  2
ROW_ID             ROW2_ID
------------------ ------------------
ACBALMAPLAANwPCBlW AAAThzAALAADNGGAAA
ACBALMAPLAANwPCDY7 AAAThzAALAADNGGAAB
ACBALMAPLAANwPCDZG AAAThzAALAADNGGAAC
ACBALMAPLAANwPCDZT AAAThzAALAADNGGAAD
...
Notice that the ROWID's are different. Digging through packages/acs- subsite/www/register, it is clear that the code expects a ROWID from the USERs table. So the solution is either to add a suitable column to the cc_users view, i.e. "users.rowid as row_id", or modifiy the queries in awaiting-email-verification and email-confirm to join against users. We've done the latter for now.
Collapse
Posted by Andrew Grumet on
Sorry, I meant to post this to the design forum.  I'll repost there.