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:
RevisionActionfile
1.11modifywip/qore/Makefile
1.5modifywip/qore/PLIST
1.2modifywip/qore/TODO
1.5modifywip/qore/distinfo
1.1removewip/qore/patches/patch-include_qore_common.h