05.09.2016, 06:13
R40 has been (finally) released.
This release has code-breaking changes! Refer to the bottom of this post for a tutorial on how to update your scripts.
Changelog:
I've also created a new wiki page for R40, available here.
Downloads, as usual, here.
Thanks to everyone who helped me in any way during the development of R40!
This release has code-breaking changes! Refer to the bottom of this post for a tutorial on how to update your scripts.
Changelog:
- code-breaking changes:
- removed connection handle parameter from all cache functions
- added 'MySQL' tag to all connection handle parameters
- removed redundant prefixes from enumerations (e.g. 'LOG_ERROR -> ERROR')
- moved 'MySQL:handle' parameter in functions 'mysql_escape_string', 'mysql_stat' and 'mysql_get_charset' (it's the last parameter now)
- swapped places of parameters 'password[]' and 'database[]' in function 'mysql_connect'
- moved all connection options from 'mysql_connect' to its own system ('mysql_init_options' and 'mysql_set_option' for more information)
- renamed 'mysql_option' to 'mysql_global_options'
- removed 'cache_get_data' (use 'cache_get_*_count')
- removed parameter 'clearvars' in 'orm_delete' (see 'orm_clear_vars' for more information)
- renamed 'cache_get_row' to 'cache_get_value_index' ('_int' and '_float' likewise)
- renamed 'cache_get_field_content' to 'cache_get_value_name' ('_int' and '_float' likewise)
- all 'cache_get_*' (e.g. 'cache_get_value_index_bool' or 'cache_get_row_count') functions now return their value through a reference parameter instead of returning it directly
- the 'logtype' parameter in 'mysql_log' has been removed; there is no HTML-logging anymore
- all y_inline support code has been outsourced, see samp-mysql-yinline-include
- 'cache_set_active(Cache:0)' doesn't unset the active cache, see 'cache_unset_active()'
- removed 'mysql_reconnect'
- removed 'mysql_current_handle'
- major system changes:
- stored cache results are now handled globally, not per-connection (as before); that means you can now share stored results between filterscripts and gamemodes
- the plugin doesn't force-auto-reconnect now (background: the plugin stored the login credentials internally to basically perform a disconnect and immediate connect on specific error cases; now the plugin doesn't store any credentials anymore)
- all natives now indicate their execution status through their return value (e.g. return 1 on success, 0 on failure)
- new features:
- support for multiple result sets
- support for passing arrays and references to result callbacks (format specifier 'a' and 'r') ('a' expects 'i'/'d' after itself to provide the array size; the size format specifier is also passed as a callback argument)
- brand new logging system:
- automatic detection of debug info (compiled with '-d2'/'-d3'): if the log system detects any debug information within the script, plugin native logs will have the script file name and line number displayed within the according log line
- threaded logging: the new log system is now completely threaded and crash-safe, resulting in a faster logging experience (especially when logging with all log levels enabled)
- third-party compatible: other plugin authors can incorporate this new logging system into their plugins and take advantage of fast, safe and managed text logging
- ability to create SSL-encrypted connections
- 'orm_update' and 'orm_delete' now accept callbacks
- 'mysql_query_file': send unthreaded queries from a .sql file
- 'mysql_connect_file': create a connection handle using a file (which has all the credentials and options stored in an INI-like format)
- 'orm_clear_vars': sets all registered variables to 0
- 'cache_is_value_null': returns true if the value is 'NULL'
- 'cache_get_value_bool': returns 'false' if the value is 0, otherwise 'true'
- 'cache_get_value' overloads: instead of calling e.g. 'cache_get_value_index_int(0, 0)' one can now just omit the 'index'/'name' part: 'cache_get_value_int(0, 0)' (this will correctly translate to the former call)
same goes for all other 'cache_get_value' natives (and 'cache_is_value_null') - 'cache_get_field_type': returns the type of a field
- 'cache_unset_active': unsets the active cache
I've also created a new wiki page for R40, available here.
Downloads, as usual, here.
Thanks to everyone who helped me in any way during the development of R40!