cvs: php4 /ext/fbsql php_fbsql.c php_fbsql.h

From: Date: Tue, 04 Sep 2001 21:51:11 +0000
Subject: cvs: php4 /ext/fbsql php_fbsql.c php_fbsql.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-7206@lists.php.net to get a copy of this message
fmk Tue Sep 4 17:51:11 2001 EDT Modified files: /php4/ext/fbsql php_fbsql.h php_fbsql.c Log: Adding function to set transaction locking and isolation. Index: php4/ext/fbsql/php_fbsql.h diff -u php4/ext/fbsql/php_fbsql.h:1.9 php4/ext/fbsql/php_fbsql.h:1.10 --- php4/ext/fbsql/php_fbsql.h:1.9 Sun Jul 29 21:56:24 2001 +++ php4/ext/fbsql/php_fbsql.h Tue Sep 4 17:51:11 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fbsql.h,v 1.9 2001/07/30 01:56:24 zeev Exp $ */ +/* $Id: php_fbsql.h,v 1.10 2001/09/04 21:51:11 fmk Exp $ */ #define HAVE_FBSQL 1 @@ -76,6 +76,7 @@ PHP_FUNCTION(fbsql_field_len); PHP_FUNCTION(fbsql_field_type); PHP_FUNCTION(fbsql_field_flags); +PHP_FUNCTION(fbsql_set_transaction); PHP_FUNCTION(fbsql_autocommit); PHP_FUNCTION(fbsql_commit); PHP_FUNCTION(fbsql_rollback); Index: php4/ext/fbsql/php_fbsql.c diff -u php4/ext/fbsql/php_fbsql.c:1.45 php4/ext/fbsql/php_fbsql.c:1.46 --- php4/ext/fbsql/php_fbsql.c:1.45 Mon Aug 13 12:39:59 2001 +++ php4/ext/fbsql/php_fbsql.c Tue Sep 4 17:51:11 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_fbsql.c,v 1.45 2001/08/13 16:39:59 andi Exp $ */ +/* $Id: php_fbsql.c,v 1.46 2001/09/04 21:51:11 fmk Exp $ */ /* TODO: * @@ -155,6 +155,17 @@ #define FBSQL_NUM 1<<1 #define FBSQL_BOTH (FBSQL_ASSOC|FBSQL_NUM) +#define FBSQL_LOCK_DEFERRED 0 +#define FBSQL_LOCK_OPTIMISTIC 1 +#define FBSQL_LOCK_PESSIMISTIC 2 // default + +#define FBSQL_ISO_READ_UNCOMMITED 0 +#define FBSQL_ISO_READ_NCOMMITED 1 +#define FBSQL_ISO_REPEATABLE_READ 2 +#define FBSQL_ISO_SERIALIZABLE 3 // default +#define FBSQL_ISO_VERSIONED 4 + + /* {{{ fbsql_functions[] */ function_entry fbsql_functions[] = { @@ -196,6 +207,7 @@ PHP_FE(fbsql_field_flags, NULL) /* Fontbase additions: */ + PHP_FE(fbsql_set_transaction, NULL) PHP_FE(fbsql_autocommit, NULL) PHP_FE(fbsql_commit, NULL) PHP_FE(fbsql_rollback, NULL) @@ -376,6 +388,18 @@ REGISTER_LONG_CONSTANT("FBSQL_ASSOC", FBSQL_ASSOC, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FBSQL_NUM", FBSQL_NUM, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("FBSQL_BOTH", FBSQL_BOTH, CONST_CS | CONST_PERSISTENT); + + /* Register Transaction constants */ + REGISTER_LONG_CONSTANT("FBSQL_LOCK_DEFERRED", FBSQL_LOCK_DEFERRED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FBSQL_LOCK_OPTIMISTIC", FBSQL_LOCK_OPTIMISTIC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FBSQL_LOCK_PESSIMISTIC", FBSQL_LOCK_PESSIMISTIC, CONST_CS | CONST_PERSISTENT); + + REGISTER_LONG_CONSTANT("FBSQL_ISO_READ_UNCOMMITED", FBSQL_ISO_READ_UNCOMMITED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FBSQL_ISO_READ_NCOMMITED", FBSQL_ISO_READ_NCOMMITED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FBSQL_ISO_REPEATABLE_READ", FBSQL_ISO_REPEATABLE_READ, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FBSQL_ISO_SERIALIZABLE ", FBSQL_ISO_SERIALIZABLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FBSQL_ISO_VERSIONED", FBSQL_ISO_VERSIONED, CONST_CS | CONST_PERSISTENT); + return SUCCESS; } @@ -425,8 +449,6 @@ DISPLAY_INI_ENTRIES(); } -/* {{{ php_fbsql_do_connect - */ static void php_fbsql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistant) { PHPFBLink* phpLink; @@ -574,7 +596,6 @@ } php_fbsql_set_default_link(return_value->value.lval TSRMLS_CC); } -/* }}} */ int phpfbFetchRow(PHPFBResult* result, int row) { @@ -653,8 +674,6 @@ } /* }}} */ -/* {{{ php_fbsql_select_db - */ static int php_fbsql_select_db(char *databaseName, PHPFBLink *link TSRMLS_DC) { unsigned port; @@ -713,10 +732,7 @@ } return 1; } -/* }}} */ -/* {{{ phpfbestrdup - */ void phpfbestrdup(const char * s, int* length, char** value) { int l = s?strlen(s):0; @@ -730,6 +746,35 @@ *value = r; } *length = l; +} + +/* {{{ proto void fbsql_set_transaction(resource link_identifier, int Locking, int Isolation) + Set the transaction locking and isolation */ +PHP_FUNCTION(fbsql_set_transaction) +{ + PHPFBLink* phpLink = NULL; + FBCMetaData* md; + zval **fbsql_link_index = NULL, **Locking = NULL, **Isolation = NULL; + char strSQL[1024]; + char *strLocking[] = {"DEFERRED", "OPTIMISTIC", "PESSIMISTIC"}; + char *strIsolation[] = {"READ UNCOMMITED", "READ NCOMMITED", "REPEATABLE READ", "SERIALIZABLE", "VERSIONED"}; + + switch (ZEND_NUM_ARGS()) { + case 3: + if (zend_get_parameters_ex(3, &fbsql_link_index, &Locking, &Isolation)==FAILURE) { + RETURN_FALSE; + } + break; + default: + WRONG_PARAM_COUNT; + break; + } + ZEND_FETCH_RESOURCE2(phpLink, PHPFBLink *, fbsql_link_index, -1, "FrontBase-Link", le_link, le_plink); + + sprintf(strSQL, "SET TRANSACTION LOCKING %s, ISOLATION %s;", strLocking[Z_LVAL_PP(Locking)], strIsolation[Z_LVAL_PP(Isolation)]); + + md = fbcdcExecuteDirectSQL(phpLink->connection, strSQL); + fbcmdRelease(md); } /* }}} */

« previous php.cvs (#7206) next »