summaryrefslogtreecommitdiff
path: root/ext/oracle/oracle.c
diff options
context:
space:
mode:
authorThies C. Arntzen <thies@php.net>1999-09-22 09:52:19 +0000
committerThies C. Arntzen <thies@php.net>1999-09-22 09:52:19 +0000
commit8c6da509f283194be745efea719af69521eca062 (patch)
tree505914dd87268e2541f849a2174ce8cfb7f7167c /ext/oracle/oracle.c
parent5f3515652a93f10604a6ebbf5662a6031a0137f0 (diff)
downloadphp-git-8c6da509f283194be745efea719af69521eca062.tar.gz
resourcified Oracle
Diffstat (limited to 'ext/oracle/oracle.c')
-rw-r--r--ext/oracle/oracle.c173
1 files changed, 53 insertions, 120 deletions
diff --git a/ext/oracle/oracle.c b/ext/oracle/oracle.c
index 837f70cb20..381a793c16 100644
--- a/ext/oracle/oracle.c
+++ b/ext/oracle/oracle.c
@@ -83,9 +83,7 @@ PHP_ORA_API php_ora_globals ora_globals;
#define ORA_FETCHINTO_ASSOC (1<<0)
#define ORA_FETCHINTO_NULLS (1<<1)
-static oraConnection *ora_get_conn(HashTable *,HashTable *, int);
-static int ora_add_cursor(HashTable *, oraCursor *);
-static oraCursor *ora_get_cursor(HashTable *, int);
+static oraCursor *ora_get_cursor(HashTable *, pval *);
static void ora_del_cursor(HashTable *, int);
static char *ora_error(Cda_Def *);
static int ora_describe_define(oraCursor *);
@@ -637,13 +635,9 @@ PHP_FUNCTION(ora_open)
if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(arg);
-
- conn_ind = arg->value.lval;
- conn = ora_get_conn(list,plist, conn_ind);
- if (conn == NULL) {
- RETURN_FALSE;
- }
+
+ conn = (oraConnection *) zend_fetch_resource_ex(arg, -1, "Oracle-Connection", 2, le_conn, le_pconn);
+ ZEND_VERIFY_RESOURCE(conn);
if ((cursor = (oraCursor *)emalloc(sizeof(oraCursor))) == NULL){
php_error(E_WARNING, "Out of memory");
@@ -659,7 +653,8 @@ PHP_FUNCTION(ora_open)
cursor->open = 1;
cursor->conn_ptr = conn;
cursor->conn_id = conn_ind;
- RETURN_RESOURCE(ora_add_cursor(list, cursor));
+
+ ZEND_REGISTER_RESOURCE(return_value, cursor, le_cursor);
}
/* }}} */
@@ -690,12 +685,10 @@ PHP_FUNCTION(ora_commitoff)
if (getParameters(ht, 1, &arg) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(arg);
- conn = ora_get_conn(list,plist, arg->value.lval);
- if (conn == NULL) {
- RETURN_FALSE;
- }
+ conn = (oraConnection *) zend_fetch_resource_ex(arg, -1, "Oracle-Connection", 2, le_conn, le_pconn);
+ ZEND_VERIFY_RESOURCE(conn);
+
if (ocof(&conn->lda)) {
php_error(E_WARNING, "Unable to turn off auto-commit (%s)",
ora_error(&conn->lda));
@@ -715,11 +708,8 @@ PHP_FUNCTION(ora_commiton)
if (getParameters(ht, 1, &arg) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(arg);
-
- if (!(conn = ora_get_conn(list,plist, arg->value.lval))) {
- RETURN_FALSE;
- }
+ conn = (oraConnection *) zend_fetch_resource_ex(arg, -1, "Oracle-Connection", 2, le_conn, le_pconn);
+ ZEND_VERIFY_RESOURCE(conn);
if (ocon(&conn->lda)) {
php_error(E_WARNING, "Unable to turn on auto-commit (%s)",
@@ -740,12 +730,9 @@ PHP_FUNCTION(ora_commit)
if (getParameters(ht, 1, &arg) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(arg);
+ conn = (oraConnection *) zend_fetch_resource_ex(arg, -1, "Oracle-Connection", 2, le_conn, le_pconn);
+ ZEND_VERIFY_RESOURCE(conn);
- conn = ora_get_conn(list,plist, arg->value.lval);
- if (conn == NULL) {
- RETURN_FALSE;
- }
if (ocom(&conn->lda)) {
php_error(E_WARNING, "Unable to commit transaction (%s)",
ora_error(&conn->lda));
@@ -765,12 +752,9 @@ PHP_FUNCTION(ora_rollback)
if (getParameters(ht, 1, &arg) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(arg);
+ conn = (oraConnection *) zend_fetch_resource_ex(arg, -1, "Oracle-Connection", 2, le_conn, le_pconn);
+ ZEND_VERIFY_RESOURCE(conn);
- conn = ora_get_conn(list,plist, arg->value.lval);
- if (conn == NULL) {
- RETURN_FALSE;
- }
if (orol(&conn->lda)) {
php_error(E_WARNING, "Unable to roll back transaction (%s)",
ora_error(&conn->lda));
@@ -795,7 +779,6 @@ PHP_FUNCTION(ora_parse)
if ((argc != 2 && argc != 3) || getParametersArray(ht, argc, argv) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(argv[0]);
convert_to_string(argv[1]);
if (argc == 3) {
@@ -811,7 +794,7 @@ PHP_FUNCTION(ora_parse)
php_error(E_WARNING, "Invalid query");
RETURN_FALSE;
}
- if (!(cursor = ora_get_cursor(list, argv[0]->value.lval))){
+ if (!(cursor = ora_get_cursor(list, argv[0]))){
efree(query);
RETURN_FALSE;
}
@@ -852,12 +835,11 @@ PHP_FUNCTION(ora_bind)
if (argc < 4 || argc > 5 || getParametersArray(ht, argc, argv) == FAILURE){
WRONG_PARAM_COUNT;
}
- convert_to_long(argv[0]);
convert_to_string(argv[1]);
convert_to_string(argv[2]);
convert_to_long(argv[3]);
- cursor = ora_get_cursor(list, argv[0]->value.lval);
+ cursor = ora_get_cursor(list, argv[0]);
if (cursor == NULL) {
php_error(E_WARNING, "Invalid cursor index %d",
argv[0]->value.lval);
@@ -949,9 +931,7 @@ PHP_FUNCTION(ora_exec)
if (getParameters(ht, 1, &arg) == FAILURE)
WRONG_PARAM_COUNT;
- convert_to_long(arg);
-
- if ((cursor = ora_get_cursor(list, arg->value.lval)) == NULL) {
+ if ((cursor = ora_get_cursor(list, arg)) == NULL) {
RETURN_FALSE;
}
@@ -993,9 +973,7 @@ PHP_FUNCTION(ora_numcols)
if (getParameters(ht, 1, &arg) == FAILURE)
WRONG_PARAM_COUNT;
- convert_to_long(arg);
-
- if ((cursor = ora_get_cursor(list, arg->value.lval)) == NULL) {
+ if ((cursor = ora_get_cursor(list, arg)) == NULL) {
RETURN_FALSE;
}
@@ -1013,9 +991,7 @@ PHP_FUNCTION(ora_numrows)
if(getParameters(ht, 1, &arg) == FAILURE)
WRONG_PARAM_COUNT;
- convert_to_long(arg);
-
- if((cursor = ora_get_cursor(list, arg->value.lval)) == NULL) {
+ if((cursor = ora_get_cursor(list, arg)) == NULL) {
RETURN_FALSE;
}
@@ -1037,13 +1013,10 @@ PHP_FUNCTION(ora_do)
WRONG_PARAM_COUNT;
}
- convert_to_long(argv[0]);
- convert_to_string(argv[1]);
+ conn = (oraConnection *) zend_fetch_resource_ex(argv[0], -1, "Oracle-Connection", 2, le_conn, le_pconn);
+ ZEND_VERIFY_RESOURCE(conn);
- conn = ora_get_conn(list,plist, argv[0]->value.lval);
- if (conn == NULL) {
- RETURN_FALSE;
- }
+ convert_to_string(argv[1]);
if ((cursor = (oraCursor *)emalloc(sizeof(oraCursor))) == NULL){
php_error(E_WARNING, "Out of memory");
@@ -1103,7 +1076,7 @@ PHP_FUNCTION(ora_do)
}
}
- RETURN_RESOURCE(ora_add_cursor(list, cursor));
+ ZEND_REGISTER_RESOURCE(return_value, cursor, le_cursor);
}
/* }}} */
@@ -1117,10 +1090,8 @@ PHP_FUNCTION(ora_fetch)
if (getParameters(ht, 1, &arg) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(arg);
- /* Find the cursor */
- if ((cursor = ora_get_cursor(list, arg->value.lval)) == NULL) {
+ if ((cursor = ora_get_cursor(list, arg)) == NULL) {
RETURN_FALSE;
}
@@ -1176,10 +1147,8 @@ PHP_FUNCTION(ora_fetch_into)
RETURN_FALSE;
}
- convert_to_long(arg1);
-
/* Find the cursor */
- if ((cursor = ora_get_cursor(list, arg1->value.lval)) == NULL) {
+ if ((cursor = ora_get_cursor(list, arg1)) == NULL) {
RETURN_FALSE;
}
@@ -1313,17 +1282,13 @@ PHP_FUNCTION(ora_fetch_into)
PHP_FUNCTION(ora_columnname)
{ /* cursor_index, column_index */
pval *argv[2];
- int cursor_ind;
oraCursor *cursor = NULL;
if (ARG_COUNT(ht) != 2 || getParametersArray(ht, 2, argv) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(argv[0]);
- cursor_ind = argv[0]->value.lval;
- /* Find the cursor */
- if ((cursor = ora_get_cursor(list, cursor_ind)) == NULL) {
+ if ((cursor = ora_get_cursor(list, argv[0])) == NULL) {
RETURN_FALSE;
}
@@ -1354,18 +1319,14 @@ PHP_FUNCTION(ora_columnname)
PHP_FUNCTION(ora_columntype)
{ /* cursor_index, column_index */
pval *argv[2];
- int cursor_ind, colno;
+ int colno;
oraCursor *cursor = NULL;
if (ARG_COUNT(ht) != 2 || getParametersArray(ht, 2, argv) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(argv[0]);
- /* don't convert the column index yet, it might be the column name */
- cursor_ind = argv[0]->value.lval;
- /* Find the cursor */
- if ((cursor = ora_get_cursor(list, cursor_ind)) == NULL) {
+ if ((cursor = ora_get_cursor(list, argv[0])) == NULL) {
RETURN_FALSE;
}
@@ -1427,7 +1388,6 @@ PHP_FUNCTION(ora_columntype)
PHP_FUNCTION(ora_columnsize)
{ /* cursor_index, column_index */
pval *argv[2];
- int cursor_ind;
oraCursor *cursor = NULL;
if (ARG_COUNT(ht) != 2 || getParametersArray(ht, 2, argv) == FAILURE) {
@@ -1435,9 +1395,8 @@ PHP_FUNCTION(ora_columnsize)
}
convert_to_long(argv[0]);
- cursor_ind = argv[0]->value.lval;
/* Find the cursor */
- if ((cursor = ora_get_cursor(list, cursor_ind)) == NULL) {
+ if ((cursor = ora_get_cursor(list, argv[0])) == NULL) {
RETURN_FALSE;
}
@@ -1476,10 +1435,7 @@ PHP_FUNCTION(ora_getcolumn)
WRONG_PARAM_COUNT;
}
- convert_to_long(argv[0]);
-
- /* Find the cursor */
- if ((cursor = ora_get_cursor(list, argv[0]->value.lval)) == NULL) {
+ if ((cursor = ora_get_cursor(list, argv[0])) == NULL) {
RETURN_FALSE;
}
@@ -1605,20 +1561,20 @@ PHP_FUNCTION(ora_error)
oraCursor *cursor;
oraConnection *conn;
- if (ARG_COUNT(ht) != 1 || getParametersArray(ht, 1, &arg) == FAILURE) {
+ if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(arg);
- if ((cursor = ora_get_cursor(list, arg->value.lval)) != NULL) {
- return_value->type = IS_STRING;
- return_value->value.str.val = estrdup(ora_error(&cursor->cda));
- return_value->value.str.len = strlen(return_value->value.str.val);
- } else if ((conn = ora_get_conn(list,plist, arg->value.lval)) != NULL) {
- return_value->type = IS_STRING;
- return_value->value.str.val = estrdup(ora_error(&conn->lda));
- return_value->value.str.len = strlen(return_value->value.str.val);
+ conn = (oraConnection *) zend_fetch_resource_ex(arg, -1, NULL, 2, le_conn, le_pconn);
+ if (conn) {
+ RETURN_STRING(ora_error(&conn->lda),1);
+ } else {
+ cursor = (oraCursor *) zend_fetch_resource_ex(arg, -1, NULL, 1, le_cursor);
+ if (cursor) {
+ RETURN_STRING(ora_error(&cursor->cda),1);
+ }
}
+ RETURN_FALSE;
}
/* }}} */
@@ -1630,16 +1586,20 @@ PHP_FUNCTION(ora_errorcode)
oraCursor *cursor;
oraConnection *conn;
- if (ARG_COUNT(ht) != 1 || getParametersArray(ht, 1, &arg) == FAILURE) {
+ if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &arg) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(arg);
- if ((cursor = ora_get_cursor(list, arg->value.lval)) != NULL) {
- RETURN_LONG(cursor->cda.rc);
- } else if ((conn = ora_get_conn(list,plist, arg->value.lval)) != NULL) {
+ conn = (oraConnection *) zend_fetch_resource_ex(arg, -1, NULL, 2, le_conn, le_pconn);
+ if (conn) {
RETURN_LONG(conn->lda.rc);
+ } else {
+ cursor = (oraCursor *) zend_fetch_resource_ex(arg, -1, NULL, 1, le_cursor);
+ if (cursor) {
+ RETURN_LONG(cursor->cda.rc);
+ }
}
+ RETURN_FALSE;
}
/* }}} */
@@ -1658,42 +1618,15 @@ PHP_MINFO_FUNCTION(oracle)
** Functions internal to this module.
*/
-static oraConnection *
-ora_get_conn(HashTable *list,HashTable *plist,int ind)
-{
- oraConnection *conn = NULL;
- int type;
- ORALS_FETCH();
-
- conn = (oraConnection *)php3_list_find(ind, &type);
- if (conn && type == le_conn)
- return conn;
-
- conn = (oraConnection *)php3_plist_find(ind, &type);
- if (conn && type == le_pconn)
- return conn;
-
- php_error(E_WARNING,"Bad Oracle connection number (%d)", ind);
- return NULL;
-}
-
-int ora_add_cursor(HashTable *list, oraCursor *cursor)
-{
- ORALS_FETCH();
- return php3_list_insert(cursor, le_cursor);
-}
-
static oraCursor *
-ora_get_cursor(HashTable *list, int ind)
+ora_get_cursor(HashTable *list, pval *ind)
{
oraCursor *cursor;
oraConnection *db_conn;
- int type;
ORALS_FETCH();
- cursor = php3_list_find(ind, &type);
- if (!cursor || type != le_cursor) {
- php_error(E_WARNING, "Invalid cursor index %d", ind);
+ cursor = (oraCursor *) zend_fetch_resource_ex(ind, -1, "Oracle-Cursor", 1, le_cursor);
+ if (! cursor) {
return NULL;
}