Changelog from release notes:
Bug Fixes in Qore:
* fixed a reference bug in the Queue class introduced in the last release
(issue 1309)
* fixed a bug where database types could not be correctly aligned if they had
dependencies (issue 1314); entailed updates in the following modules:
SqlUtil
FreetdsSqlUtil
MysqlSqlUtil
OracleSqlUtil
PgsqlSqlUtil
Schema
* fixed a bug in trunc_str() where an infinite loop could be triggered with
certain arguments and multi-byte character encodings (issue 1327)
* improved prompt collection performance with larger graphs of objects by
eliminating unnecessary graph scans made during object method calls
(issue 1363)
* fixed bugs in date(string) and date(string, string) where invalid input data
was ignored and invalid dates were returned (issue 1369)
* CsvUtil.qm module:
fixed a bug in AbstractCsvIterator::identifyTypeImpl() generating an
error message (issue 1355)
* MailMessage.qm module:
fixed a bug using the default encoding in Message::attach()
(issue issue 1352)
* SqlUtil.qm module:
* fixed the ignored character_semantics column option in schema alignmed
(issue 1379)
* implemented the cop_length() column function (issue 1395)
* OracleSqlUtil.qm module:
OraclePackage attribute body_src is now public to access package bodies
* Qorize.qm module:
Qorize module: new qorize_val() set of functions; qorize_named()
introduced; qorize tests
* TableMapper.qm module:
* fixed runtime option propagation to
TableMapper::SqlStatementMapperIterator from
TableMapper::AbstractSqlStatementOutboundMapper::iterator()
(issue 1418)
* fixed SqlStatementMapperIterator::getCount() (issue 1417)
* added the following methods:
TableMapper::AbstractSqlStatementOutboundMapper::getRowIterator()
TableMapper::InboundTableMapper::iterator()
TableMapper::InboundTableMapperIterator::getRuntime()
TableMapper::InboundTableMapperIterator::replaceRuntime()
TableMapper::InboundTableMapperIterator::setRuntime()
TableMapper::SqlStatementMapperIterator::getRuntime()
TableMapper::SqlStatementMapperIterator::replaceRuntime()
TableMapper::SqlStatementMapperIterator::setRuntime()
* QUnit.qm module:
fixed showing the assertion location when there are test modules on
top of QUnit.qm (issue 1046)
* fixed inconsistency between list splice operator and splice function
(issue 1380)
* fixed the documentation (and DB modules) where
SQLStatement::fetchColumns() was inconsistent; now it will return a
empty hash when no more rows are available to fetch (issue 1241)
* added I/O timeout support to the FtpClient class (issue 1252)
* fixed bugs in Socket::recv() and Socket::recvBinary() with size = 0
where NOTHING could be returned which is invalid according to the
methods' declared return types (issue 1260)
* fixed a bug where FtpClient:get() would fail with an exception when
retrieving an empty file (issue 1255)
* fixed a bug where executing a call reference to a deleted object
method would cause a crash (issue 1268)
* fixed a bug where Qore would allow methods to be called on already
deleted objects under certain conditions (issue 1270)
* fixed a bug where calling exit() in a multithreaded program could
result in a segmentation fault (issue 1215)
* fixed a bug where HttpServer::addListener() could not accept a bind on
port 0 to mean any random port (issue 1284)
* fixed a race condition in prompt collection that could lead to a crash
(issue 1084)
* fixed a bug clearing Socket event queues when the Socket goes out of
scope that could lead to a crash (issue 1292)
* fixed a bug with FtpClient::setWarningQueue() that could cause a crash
(issue 1293)
* fixed a bug where Qore::FtpClient::pwd() returned invalid directory
names (issue 1295)
* fixed bugs in handling websocket close status codes in the
WebSocketUtil, WebSocketClient, and WebSocketHandler modules
(issue 1216)
* TableMapper module fixes:
* fixed a bug with the SqlStatementOutboundMapper::iterator() method;
corrected the iterator object return value which was causing
AbstractMapperIterator::mapBulk() to fail (issue 979)
* fixed a bug with SqlStatementOutboundMapper; it would throw an error
if the required "table" or "sh" options were used and only worked
with subclasses that declared these options (issue 981)
* fixed a bug where AbstractSqlStatementOutboundMapper::iterator()
failed to use options when creating the new Mapper object
(issue 1088)
* fixed a bug where optional arguments were not handled correctly in
some rare cases (issue 974)
* fixed a bug causing a crash when parse_base64_string_to_string() was
called with an empty string (issue 996)
* fixed a bug resolving base class method calls during parse
initialization (issue 1075)
* fixed thread memory handling bug with some operator expressions and
the background operator (issue 1096)
* fixed a race condition in the prompt collection of closure-bound local
variables in the garbage collector (issue 1103)
* fixed a bug where HTTPClient class method variants such as
HTTPClient::get() without a callback would fail to return the message
body when the server sent a reply with chunked transfer encoding
(issue 1117)
* fixed a bug in CsvUtil where backward compatibility was broken for
single-row-type format (issue 1124)
* fixed bugs where declared public functions were missing from the
library ABI (issue 1126)
* fixed bugs where Qore::format_number() and <float>::format() gave
incorrect results when rounding to the significant decimals given in
the format string (issue 1149)
* fixed a bug referencing self in base class constructor arguments
(issue 1169)
* fixed a bug where the incorrect class destructor was called in the
openldap module (issue 1174)
* fixed a bug where declaring a copy() method as synchronized would
result in a crash when the method was called (issue 1188)
* fixed bugs in <string>::getEncoded() and <string>::getDecoded()
regarding CE_XML and CE_NONASCII (issue 1193)
* fixed bugs where Qore::call_object_method() and
Qore::call_object_method_args() allowed private methods to be called
from outside the class (issue 1194)
* fixed a bug where "Deprecated" Functions methods were being internally
registered as RUNTIME_NOOP (issue 1197)
* fixed bugs where the Datasource class would open a connection to the
server in the constructor before options were set and where a server
connection was required to call Datasource::getOption() or
Datasource::setOption() (issue 1201)
* fixed memory errors in the Queue class where spurious exceptions could
be raised (issue 1202)
* fixed a memory leak with static class member initializers (issue 1206)
Qore 0.8.12 is a major new release with many new features and hundreds of bug
fixes as well as packaging fixes. Highlights include:
* The most significant innovation in this release comes in the form of support
for Prompt Collection
* Support for Bulk DML (large volume SQL operations in one server round-trip)
in the Mapper, TableMapper, SqlUtil and the new BulkSqlUtil modules
* Standardized function naming convention, many significant design and
implementation fixes and improvements
* Numerous new functions, methods, constants, operators, and user modules
* Hundreds of bug fixes
memory and CPU time for certain input. Provide a variable
(CLANG_NO_VALUE_PROPAGATION_PASS) for selectively disabling it in those
places known to trigger it.
Qore is a modular, multi-threaded, SQL-integrated dynamically typed
scripting language with optional hard typing and procedural and
object-oriented features, powerful and easy-to-use data types,
structures, and operators, a clean and easy-to-lean/read syntax.