OCITypeByName and kgepop: **** 21522 error

From: maxim <member23824_at_dbforums.com>
Date: Tue, 28 Jan 2003 19:33:14 +0000
Message-ID: <2449602.1043782394_at_dbforums.com>


Hi,

I am maintaining the official Oracle extension for PHP. Some of the OCICollection functionality does a few funny things.

The following piece of C code:

	OCITypeByName(
		 connection->session->pEnv

,connection->pError
,connection->pServiceContext
,(CONST text *) (ac==3? Z_STRVAL_PP(schema) : 0)
,(ub4) (ac==3? Z_STRLEN_PP(schema) : 0)
,(CONST text *) Z_STRVAL_PP(tdo)
,(ub4) Z_STRLEN_PP(tdo)
,(CONST text *) 0
,(ub4) 0
,OCI_DURATION_SESSION
,OCI_TYPEGET_ALL
,&coll->tdo
)

Produces two kinds of behavior:

  1. if the third parameter not passed (schema) the call to this function ends up with:

kgepop: no error frame to pop to for error 21522

which is a permanent error killing PHP/Apache process.

2. if the schema is passed, even so it is correct, the error

   message appears:

OCI-22303: type "SCHEMA"."TYPE" not found

This is does not happen everywhere, but currently on WinXP, Oracle 9.0.1 through PHP in CLI mode.

I saw no solutions for that and have no clue what is going on. Why passing a string for Schema gives an error and passing a null halts the process? What the hell kgepop is anyway?

P.S: the full code is available here:
http://cvs.php.net/co.php/php4/ext/oci8/oci8.c?login=2

P.S: whoever has PHP installed anywhere with OCI8 extension, try up

     this example:

<?
$conn = OCILogon('scott', 'tiger');
$coll = OciNewCollection($conn, 'type_that_does_not_exist'); // should produce the crash
?>

Any hits would be greatly appreciated,
Thanks

--
Posted via http://dbforums.com
Received on Tue Jan 28 2003 - 20:33:14 CET

Original text of this message