Path to this page:
Subject: CVS commit: wip/qore
From: Niclas Rosenvik
Date: 2014-03-22 21:31:23
Message id: E1WRSZy-0008W3-3u@sfs-ml-2.v29.ch3.sourceforge.com
Log Message:
Updated Qore to 0.8.9.
Removed patches/patch-include_qore_common.h since this fix is addressed in Qore \
0.8.9.
New Features in Qore
CsvUtil module updates:
new classes:
CsvAbstractIterator: base abstract iterator class for iterating \
line-based CSV data
CsvDataIterator: iterator class allowing for CSV string data to be \
processed line by line on a record basis
AbstractCsvWriter: a base class for new CSV writer implementations
CsvFileWriter: CSV file writer class
CsvStringWriter: CSV in memory writer class
implemented support for allowing subclasses of CsvFileIterator to \
implement support for other custom types
no need to set "headers" in the constructor if \
"fields" are set; headers are assumed to be the field labels in the \
same order
added the Qore::encode_url() function with RFC 3986 section 2.1 compliance
Qore::decode_url() function updated to decode UTF-8 encoded characters \
according to RFC 3986 section 2.1
added get_byte_size() and get_marketing_byte_size() to the Util module
the error message now includes the module path used for the search when a \
module cannot be found in the module path
DatasourcePool enhancements:
new method: DatasourcePool::clearWarningCallback()
new method: DatasourcePool::setWarningCallback()
new method: DatasourcePool::getUsageInfo()
new method: DatasourcePool::setErrorTimeout()
new method: DatasourcePool::getErrorTimeout()
new method: DatasourcePool::setEventQueue()
new method: DatasourcePool::clearEventQueue()
the new methods allow for monitoring DatasourcePool objects for pool \
contention issues (in case the pool needs to be resized), for throwing an \
exception if a connection is not acquired within the error timeout period (new \
default: 2 minutes), and for DBI drivers to raise warnings on an event queue \
that can be monitored in a separate thread
additionally connection acquisition statistics are tracked and returned \
in DatasourcePool::getUsageInfo() (total requests, hits, maximum wait time)
Datasource enhancements:
new method: Datasource::setEventQueue()
new method: Datasource::clearEventQueue()
the new methods allow for DBI drivers to raise warnings on an event \
queue that can be monitored in a separate thread
Socket enhancements:
new method: Socket::setWarningQueue()
new method: Socket::clearWarningQueue()
new method: Socket::getUsageInfo()
new method: Socket::clearStats()
FtpClient enhancements:
new method: FtpClient::setWarningQueue()
new method: FtpClient::clearWarningQueue()
new method: FtpClient::getUsageInfo()
new method: FtpClient::clearStats()
SmtpClient module updates:
optimized connection and login code; HELO/EHLO and authorization are \
performed when connecting only, not before each email
added support for socket performance instrumentation and warning events
Pop3Client module updates:
added support for socket performance instrumentation and warning events
TelnetClient module updates:
added support for socket performance instrumentation and warning events
WebSocketClient module updates:
added support for socket performance instrumentation and warning events
RestClient module updates:
use the new Qore::encode_url() function to encode URL paths to ensure \
that valid requests are sent when spaces, percent characters, and non-ascii \
characters are used in the URL path
set the character encoding in the Content-Type request header when \
sending strings
set the Accept header correctly in requests (previously only indicated \
yaml ("text/x-yaml") as an acceptible response encoding)
RestHandler module updates:
added support for the OPTIONS method
return a 400 "Bad Request" error if an unsupported HTTP method \
is used in a REST Call
added new UpsertInsertOnly upsert strategy to SqlUtil
new pseudo-methods:
<value>::sizep(): returns True if the type can return a non-zero \
size (True for containers including binary objects and strings, False for \
everything else)
<string>::getLine(): finds lines in a string buffer
Mime.qm module updates:
added mime type for WSDL files ("application/wsdl+xml")
added mappings for "xls" and "xlst" extensions to \
MimeTypeXml
added new modules:
Mapper: data mapping module
TableMapper: data mapping module using SqlUtil and Mapper to map to an \
SQL table target
the %include parse directive now supports environment variable substitution \
at the beginning of the file path
Bug Fixes in Qore
fixed a crashing bug when HTTP messages with duplicate Connection, \
Content-Encoding, Transfer-Encoding, Location, or Content-Type headers is \
received
fixed a bug parsing octal character constants in the lexer when octal digits \
followed the octal constant (ex: "\0441" where the "1" would \
cause an error)
allow escaping "$" character in regular expression substitution \
target strings, previously it was impossible to output a literal "$" + \
a digit, since this would be interpreted as a numbered input pattern expression
fixed a bug in the HTTPClient::getURL() and HTTPClient::getProxyURL() \
methods where the URL's path was not given with a leading "/" \
character
CsvUtil module fixes:
fixed "date" field handling with empty input (now maps to \
1970-01-01)
fixed CsvDataIterator::next() when header_lines > 0 and working with \
empty input data
added support for compiling on OSX Mavericks
fixed an infinitely recursive call in Table::del() in SqlUtil
fixed a bug in v*printf() where '%' was not handled correctly in all cases
fixed bugs in microseconds and milliseconds() with large arguments
fixed a bug where a call to a call reference to a static method across a \
program boundary with local variables as arguments would cause a crash due to \
improper setting of the program context before the arguments are evaluated
fixed a bug in Datasource::copy() method where implicitly-set options were \
not carried over into the new object
fixed a bug in the DatasourcePool class where implicitly-opened connections \
would not be guaranteed to have the same server time zone setting as the initial \
connections (for example, could cause problems with server timezone settings if \
running in a program context with a different local time zone attribute)
fixed bugs in SqlUtil generating "create table" and "align \
table" SQL with DBs where unique indexes automatically create unique \
constraints (ex: MySQL)
fixed a bug in lchown() where chown() was used interally instead of lchown()
fixed a bug in PgsqlSqlUtil retrieving sequence values with \
Database::getNextSequenceValue()
fixed an off-by-one memory bug in Qore::date(string, string) parsing a \
4-digit date mask
fixed memory leaks in class member and class static variable management
fixed memory leaks when an entire class has to be rolled back due to parse \
errors and the class has pending static variables
fixed memory leaks in constant handling with values containing call references
fixed a memory leak in constant destruction with parse rollbacks when the \
constant value was NULL
fixed an error in the rounding heuristic for arbitrary-precision numeric \
values that could produce invalid results (ex: 34.9n * 100 = 34902n)
enforce PO_NO_FILESYSTEM with the %include directive
fixed a bug managing object private data in complex inheritance cases where \
the same class may be inherited with virtual private data and also real private \
data
fixed a bug in socket timeout handling with select() errors
fixed a memory leak in handling abstract methods when multiple abstract \
methods with the same name but different signatures were declared in a class
Files: