Path to this page:
Subject: CVS commit: wip/qore
From: Niclas Rosenvik
Date: 2014-05-31 13:42:04
Message id: E1Wqhg6-0005L2-Ba@sfs-ml-3.v29.ch3.sourceforge.com
Log Message:
Updated to 0.8.10.
Changelog:
New Features in Qore
better HTTP support; support for chunked sends and receives for
streaming data over HTTP and other improvements:
HTTPClient::sendWithSendCallback()
HTTPClient::sendWithRecvCallback()
HTTPClient::sendWithCallbacks()
HTTPClient::setPersistent()
Socket::readHTTPChunkedBodyBinaryWithCallback()
Socket::readHTTPChunkedBodyWithCallback()
Socket::sendHTTPMessageWithCallback()
Socket::sendHTTPResponseWithCallback()
Socket::pendingHttpChunkedBody()
added a minimum body size threshold for compression to HttpServer
RestClient module updates:
configurable content encoding for send request message bodies is
now supported (ie optional compression)
new user modules:
Schema: for DB-independent schema management
new public C++ socket performance instrumentation API
new functions:
Qore::close_all_fd()
new constants:
ESRCH: search error
getModuleHash() and getModuleList() no longer return the "filename"
key when run in a Program context with Qore::PO_NO_EXTERNAL_INFO set
SqlUtil updates:
added insert operator support; for example, for inserting with
values from sequences
added new upsert constant maps
added static SqlUtil::AbstractSqlUtilBase::getDatasourceDesc()
method
added new Table::insertFromSelect*() variants taking Table
arguments
added SqlUtil::Table::checkExistence() method
added support for the "forupdate" select option
OracleSqlUtil updates:
fixed selects with "limit" but no "offset"
convert date/time values to timestamps with microseconds
resolution instead of dates with second resolution when dynamically
inserting values as strings in SQL (binding by value not affected)
CsvUtil module updates:
added the "write-headers" option to CsvUtil::AbstractCsvWriter
and subclasses to enable headers to be suppressed
added the "optimal-quotes" option to CsvUtil::AbstractCsvWriter
and subclasses to enable more efficient csv output (now the default)
added AbstractDatasource::currentThreadInTransaction() which is
reimplemented as Datasource::currentThreadInTransaction() and
DatasourcePool::currentThreadInTransaction(); the base class method
throws an exception when called; it was not added as an abstract method
in order to not break existing subclasses of AbstractDatasource
enhanced module license support
module license strings may now be specified in binary and user
modules
Qore::getModuleHash() and Qore::getModuleList() now report
license information for each module
Bug Fixes in Qore
fixed an issue with class constant parse initialization where
invalid recursive class constant definition parse exceptions could be
raised and in some cases also crashes could result
SmtpClient module: fixed missing username and missing password
errors
fixed a bug where a qore switch statement with no case conditions
and only a default label would erroneously never have it's default code
executed
fixed a reference leak related to exception handling with invalid
arguments with Qore::Socket::setWarningQueue() and
Qore::HTTPClient::setWarningQueue()
fixed several bugs where the parse location could be reported
incorrectly for type errors regarding in-object variable references
fixed a bug where an error could result with Condition::wait() with
timeouts > 2147483648ms
fixed bugs handling "bigint" and "double precision" \
column types
with schema alignments with the PgsqlSqlUtil module
fixed a bug handling parse initialization of constant values
requiring run-time evaluation after other parse exceptions have been
raised that could cause a parse-time crash
fixed a bug where qore could crash on exit with certain openssl
versions by calling ERR_remove_state(0) in the main thread's cleanup
function
fixed a bug where qore could crash on exit due to user module
destruction not taking into consideration user module dependencies
fixed a bug in schema management in SqlUtil where excessively
verbose column aliases were used that caused errors when automatically
updating columns with existing rows and new default values and non-null
contraints with PostgreSQL databases
fixed a bug where a call reference to an abstract object method
returned from an abstract class could be executed even though it must
have been instantiated by a concrete subclass
fixed a bug where a valid call reference to a private object method
was created within the class, then in some cases an object protection
exception was raised when the call reference was called outside the
class
fixed a bug in the RestClient module when the yaml binary module is
not available
fixed programmatic select queries with "limit" but no \
"offset" in
OracleSqlUtil
fixed a bug in Qore::Program::importFunction() where only the
committed function list was checked when importing functions with a
specific target namespace path
fixed a bug in Qore::Program::importClass() where only the committed
class list was checked when importing functions with a specific target
namespace path
fixed a bug when parsing subnamespaces into a parent namespace where
the subnamespace already exists (either in the committed list or in the
pending list)
fixed a memory and reference leak caused by recursive references
when closures encapsulating an object's scope are assigned to or
accessible from members of the object by making references to the object
from within a closure encapsulating the object's state weak references
instead of strong references
fixed schema information classes when the "string-numbers" driver
option is enabled
fixed crashing bugs in Qore::get_thread_data() in certain use cases
fixed a bug in SqlUtil where select and row iterator operations
could fail with certain select hash arguments without a "columns" entry
but where column names were otherwise required
fixed a bug in HTTP response parsing where case-signficant
comparisons where being made with certain critical header values
fixed a bug handling thread cancellation with the ThreadPool class
fixed several race conditions and potential deadlocks in ThreadPool
destruction with active threads in the pool
Files: