⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sql_relay.c

📁 适合于Unix/Linux下的一个持久数据库连接池
💻 C
📖 第 1 页 / 共 4 页
字号:
	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnisnullable) {	zval **sqlrcur,**col;	bool r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getColumnIsNullable((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getColumnIsNullable((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnisprimarykey) {	zval **sqlrcur,**col;	bool r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getColumnIsPrimaryKey((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getColumnIsPrimaryKey((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnisunique) {	zval **sqlrcur,**col;	bool r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getColumnIsUnique((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getColumnIsUnique((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnispartofkey) {	zval **sqlrcur,**col;	bool r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getColumnIsPartOfKey((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getColumnIsPartOfKey((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnisunsigned) {	zval **sqlrcur,**col;	bool r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getColumnIsUnsigned((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getColumnIsUnsigned((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumniszerofilled) {	zval **sqlrcur,**col;	bool r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getColumnIsZeroFilled((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getColumnIsZeroFilled((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnisbinary) {	zval **sqlrcur,**col;	bool r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getColumnIsBinary((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getColumnIsBinary((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getcolumnisautoincrement) {	zval **sqlrcur,**col;	bool r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getColumnIsAutoIncrement((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getColumnIsAutoIncrement((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getlongest) {	zval **sqlrcur,**col;	uint32_t r=0;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&col) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		if (Z_TYPE_PP(col)==IS_LONG) {			convert_to_long_ex(col);			r=cursor->getLongest((*col)->value.lval);		} else if (Z_TYPE_PP(col)==IS_STRING) {			convert_to_string_ex(col);			r=cursor->getLongest((*col)->value.str.val);		}		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_getresultsetid) {	zval **sqlrcur;	uint16_t r;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcur) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		r=cursor->getResultSetId();		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_suspendresultset) {	zval **sqlrcur;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcur) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		cursor->suspendResultSet();	}}DLEXPORT ZEND_FUNCTION(sqlrcur_resumeresultset) {	zval **sqlrcur, **id;	bool r;	if (ZEND_NUM_ARGS() != 2 || 		zend_get_parameters_ex(2,&sqlrcur,&id) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_long_ex(id);	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		r=cursor->resumeResultSet((*id)->value.lval);		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcur_resumecachedresultset) {	zval **sqlrcur, **id, **filename;	bool r;	if (ZEND_NUM_ARGS() != 3 || 		zend_get_parameters_ex(3,&sqlrcur,&id,&filename) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_long_ex(id);	convert_to_string_ex(filename);	sqlrcursor *cursor=NULL;	ZEND_FETCH_RESOURCE(cursor,sqlrcursor *,sqlrcur,-1,"sqlrelay cursor",sqlrelay_cursor);	if (cursor) {		r=cursor->resumeCachedResultSet((*id)->value.lval,(*filename)->value.str.val);		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcon_ping) {	zval **sqlrcon;	bool r;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcon) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrconnection *connection=NULL;	ZEND_FETCH_RESOURCE(connection,sqlrconnection *,sqlrcon,-1,"sqlrelay connection",sqlrelay_connection);	if (connection) {		r=connection->ping();		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcon_autocommiton) {	zval **sqlrcon;	bool r;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcon) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrconnection *connection=NULL;	ZEND_FETCH_RESOURCE(connection,sqlrconnection *,sqlrcon,-1,"sqlrelay connection",sqlrelay_connection);	if (connection) {		r=connection->autoCommitOn();		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcon_autocommitoff) {	zval **sqlrcon;	bool r;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcon) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrconnection *connection=NULL;	ZEND_FETCH_RESOURCE(connection,sqlrconnection *,sqlrcon,-1,"sqlrelay connection",sqlrelay_connection);	if (connection) {		r=connection->autoCommitOff();		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcon_commit) {	zval **sqlrcon;	bool r;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcon) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrconnection *connection=NULL;	ZEND_FETCH_RESOURCE(connection,sqlrconnection *,sqlrcon,-1,"sqlrelay connection",sqlrelay_connection);	if (connection) {		r=connection->commit();		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcon_rollback) {	zval **sqlrcon;	bool r;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcon) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrconnection *connection=NULL;	ZEND_FETCH_RESOURCE(connection,sqlrconnection *,sqlrcon,-1,"sqlrelay connection",sqlrelay_connection);	if (connection) {		r=connection->rollback();		RETURN_LONG(r);	}	RETURN_LONG(0);}DLEXPORT ZEND_FUNCTION(sqlrcon_identify) {	zval **sqlrcon;	const char *r;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcon) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrconnection *connection=NULL;	ZEND_FETCH_RESOURCE(connection,sqlrconnection *,sqlrcon,-1,"sqlrelay connection",sqlrelay_connection);	if (connection) {		r=connection->identify();		if (r) {			RETURN_STRING(const_cast<char *>(r),1);		}	}	RETURN_FALSE;}DLEXPORT ZEND_FUNCTION(sqlrcon_bindformat) {	zval **sqlrcon;	const char *r;	if (ZEND_NUM_ARGS() != 1 || 		zend_get_parameters_ex(1,&sqlrcon) == FAILURE) {		WRONG_PARAM_COUNT;	}	sqlrconnection *connection=NULL;	ZEND_FETCH_RESOURCE(connection,sqlrconnection *,sqlrcon,-1,"sqlrelay connection",sqlrelay_connection);	if (connection) {		r=connection->bindFormat();zend_printf("r=%s\n",r);		if (r) {			RETURN_STRING(const_cast<char *>(r),1);		}	}	RETURN_FALSE;}zend_function_entry sql_relay_functions[] = {	ZEND_FE(sqlrcon_alloc,NULL)	ZEND_FE(sqlrcon_free,NULL)	ZEND_FE(sqlrcon_settimeout,NULL)	ZEND_FE(sqlrcon_endsession,NULL)	ZEND_FE(sqlrcon_suspendsession,NULL)	ZEND_FE(sqlrcon_getconnectionport,NULL)	ZEND_FE(sqlrcon_getconnectionsocket,NULL)	ZEND_FE(sqlrcon_resumesession,NULL)	ZEND_FE(sqlrcon_debugon,NULL)	ZEND_FE(sqlrcon_debugoff,NULL)	ZEND_FE(sqlrcon_getdebug,NULL)	ZEND_FE(sqlrcur_alloc,NULL)	ZEND_FE(sqlrcur_free,NULL)	ZEND_FE(sqlrcur_setresultsetbuffersize,NULL)	ZEND_FE(sqlrcur_getresultsetbuffersize,NULL)	ZEND_FE(sqlrcur_dontgetcolumninfo,NULL)	ZEND_FE(sqlrcur_getcolumninfo,NULL)	ZEND_FE(sqlrcur_mixedcasecolumnnames,NULL)	ZEND_FE(sqlrcur_uppercasecolumnnames,NULL)	ZEND_FE(sqlrcur_lowercasecolumnnames,NULL)	ZEND_FE(sqlrcur_cachetofile,NULL)	ZEND_FE(sqlrcur_setcachettl,NULL)	ZEND_FE(sqlrcur_getcachefilename,NULL)	ZEND_FE(sqlrcur_cacheoff,NULL)	ZEND_FE(sqlrcur_sendquery,NULL)	ZEND_FE(sqlrcur_sendquerywithlength,NULL)	ZEND_FE(sqlrcur_sendfilequery,NULL)	ZEND_FE(sqlrcur_preparequery,NULL)	ZEND_FE(sqlrcur_preparequerywithlength,NULL)	ZEND_FE(sqlrcur_preparefilequery,NULL)	ZEND_FE(sqlrcur_substitution,NULL)	ZEND_FE(sqlrcur_clearbinds,NULL)	ZEND_FE(sqlrcur_countbindvariables,NULL)	ZEND_FE(sqlrcur_inputbind,NULL)	ZEND_FE(sqlrcur_inputbindblob,NULL)	ZEND_FE(sqlrcur_inputbindclob,NULL)	ZEND_FE(sqlrcur_defineoutputbindstring,NULL)	ZEND_FE(sqlrcur_defineoutputbindinteger,NULL)	ZEND_FE(sqlrcur_defineoutputbinddouble,NULL)	ZEND_FE(sqlrcur_defineoutputbindblob,NULL)	ZEND_FE(sqlrcur_defineoutputbindclob,NULL)	ZEND_FE(sqlrcur_defineoutputbindcursor,NULL)	ZEND_FE(sqlrcur_substitutions,NULL)	ZEND_FE(sqlrcur_inputbinds,NULL)	ZEND_FE(sqlrcur_validatebinds,NULL)	ZEND_FE(sqlrcur_validbind,NULL)	ZEND_FE(sqlrcur_executequery,NULL)	ZEND_FE(sqlrcur_fetchfrombindcursor,NULL)	ZEND_FE(sqlrcur_getoutputbindstring,NULL)	ZEND_FE(sqlrcur_getoutputbindblob,NULL)	ZEND_FE(sqlrcur_getoutputbindclob,NULL)	ZEND_FE(sqlrcur_getoutputbindinteger,NULL)	ZEND_FE(sqlrcur_getoutputbinddouble,NULL)	ZEND_FE(sqlrcur_getoutputbindlength,NULL)	ZEND_FE(sqlrcur_getoutputbindcursor,NULL)	ZEND_FE(sqlrcur_opencachedresultset,NULL)	ZEND_FE(sqlrcur_colcount,NULL)	ZEND_FE(sqlrcur_rowcount,NULL)	ZEND_FE(sqlrcur_totalrows,NULL)	ZEND_FE(sqlrcur_affectedrows,NULL)	ZEND_FE(sqlrcur_firstrowindex,NULL)	ZEND_FE(sqlrcur_endofresultset,NULL)	ZEND_FE(sqlrcur_errormessage,NULL)	ZEND_FE(sqlrcur_getnullsasemptystrings,NULL)	ZEND_FE(sqlrcur_getnullsasnulls,NULL)	ZEND_FE(sqlrcur_getfield,NULL)	ZEND_FE(sqlrcur_getfieldlength,NULL)	ZEND_FE(sqlrcur_getrow,NULL)	ZEND_FE(sqlrcur_getrowassoc,NULL)	ZEND_FE(sqlrcur_getrowlengths,NULL)	ZEND_FE(sqlrcur_getrowlengthsassoc,NULL)	ZEND_FE(sqlrcur_getcolumnnames,NULL)	ZEND_FE(sqlrcur_getcolumnname,NULL)	ZEND_FE(sqlrcur_getcolumntype,NULL)	ZEND_FE(sqlrcur_getcolumnlength,NULL)	ZEND_FE(sqlrcur_getcolumnprecision,NULL)	ZEND_FE(sqlrcur_getcolumnscale,NULL)	ZEND_FE(sqlrcur_getcolumnisnullable,NULL)	ZEND_FE(sqlrcur_getcolumnisprimarykey,NULL)	ZEND_FE(sqlrcur_getcolumnisunique,NULL)	ZEND_FE(sqlrcur_getcolumnispartofkey,NULL)	ZEND_FE(sqlrcur_getcolumnisunsigned,NULL)	ZEND_FE(sqlrcur_getcolumniszerofilled,NULL)	ZEND_FE(sqlrcur_getcolumnisbinary,NULL)	ZEND_FE(sqlrcur_getcolumnisautoincrement,NULL)	ZEND_FE(sqlrcur_getlongest,NULL)	ZEND_FE(sqlrcur_getresultsetid,NULL)	ZEND_FE(sqlrcur_suspendresultset,NULL)	ZEND_FE(sqlrcur_resumeresultset,NULL)	ZEND_FE(sqlrcur_resumecachedresultset,NULL)	ZEND_FE(sqlrcon_ping,NULL)	ZEND_FE(sqlrcon_identify,NULL)	ZEND_FE(sqlrcon_autocommiton,NULL)	ZEND_FE(sqlrcon_autocommitoff,NULL)	ZEND_FE(sqlrcon_commit,NULL)	ZEND_FE(sqlrcon_rollback,NULL)	ZEND_FE(sqlrcon_bindformat,NULL)	{NULL,NULL,NULL}};zend_module_entry sql_relay_module_entry = {	#if ZEND_MODULE_API_NO >= 20010901		STANDARD_MODULE_HEADER,	#endif		"sql_relay",	sql_relay_functions,	// extension-wide startup function#ifdef ZEND_MODULE_STARTUP_N	ZEND_MODULE_STARTUP_N(sqlrelay),#else	NULL,#endif	// extension-wide shutdown function	NULL,	// per-request startup function	NULL,	// per-request shutdown function	NULL,	NULL,	#if ZEND_MODULE_API_NO >= 20010901		"0.30",		#endif		STANDARD_MODULE_PROPERTIES};DLEXPORT ZEND_GET_MODULE(sql_relay)}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -