Seed7 Release 2019-01-26

mertesthomas@gmail.com
Sun, 27 Jan 2019 02:26:23 -0800 (PST)

          From comp.compilers

Related articles
Seed7 Release 2019-01-26 mertesthomas@gmail.com (2019-01-27)
| List of all articles for this month |

From: mertesthomas@gmail.com
Newsgroups: comp.compilers
Date: Sun, 27 Jan 2019 02:26:23 -0800 (PST)
Organization: Compilers Central
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="32905"; mail-complaints-to="abuse@iecc.com"
Keywords: OOP, available
Posted-Date: 27 Jan 2019 10:51:29 EST

Hello,


I have released a new version of Seed7: seed7_05_20190126.tgz
The download is here: https://sourceforge.net/projects/seed7/files
In the Seed7 programming language new statements and operators can
be declared easily. Types are first class objects and therefore
templates/generics need no special syntax. Object orientation is used
when it brings advantages and not in places when other solutions are
more obvious.


Seed7 is covered by the GPL (and LGPL for the Seed7 runtime library).


Changelog:
- The program db7.sd7 (Database Inspector 7) has been improved to
    provide a list of tables and a possiblility to view table contents
    from this list.
- The program tar7.sd7 and the library tar.s7i have been improved to
    support Unicode file names.
- The function setupParameters() in sql_fire.c, sql_lite.c, sql_my.c,
    sql_oci.c, sql_odbc.c and sql_post.c has been improved to avoid
    calling malloc(0). Depending on the run-time library malloc(0) may
    return NULL, which would wrongly trigger a MEMORY_ERROR. The
    improvement recognizes this situation and avoids calling malloc(0).
    Other places in the database drivers, where malloc(0) could be called
    have been fixed also.
- The database driver sql_fire.c has been improved:
    - Now the cursor of a prepared statement is closed (with
        isc_dsql_free_statement), when a parameter is bound to it.
    - The opening of a database now appends the extensions .fdb and .gdb,
        when trying to open the database.
- The database driver sql_my.c has been improved:
    - The function processEscapesInStatement has been renamed to
        processStatementStri. Now it removes comments from the statement
        string.
    - The local variable 'param' has been introduced in the parameter
        binding functions. This improves readablity by avoiding many
        accesses to the param_array.
    - The local variable 'columnData' has been introduced in the column
        accessing functions. This improves readablity by avoiding many
        accesses to the result_array.
    - The function sqlColumnFloat has been improved to accept integer
        fields with all sizes.
- The database driver sql_oci.c has been improved:
    - Now there is a check if all parameters of a prepared statement are
        bound. This check takes place when a prepared statement is
        executed.
    - The function processBindVarsInStatement has been renamed to
        processStatementStri. Now it removes comments from the statement
        string and determines the number of bind parameters.
    - The functions setupParameters and allParametersBound have been
        added and the function resizeBindArray has been removed.
    - The function getFloat has been improved to convert a SQLT NUMBER
        to a double via the decimal representation.
    - The bind functions have been improved to check, that a parameter
        with the given index exists.
    - The bind functions have been improved to allow that the same
        parameter can be bound again with a different bind function (e.g.
        as integer instead of a bigInteger).
    - The function sqlBindStri has been improved to preserve trailing
        blanks in a string.
    - The local variable 'param' has been introduced in the parameter
        binding functions. This improves readablity by avoiding many
        accesses to the param_array.
    - The local variable 'columnData' has been introduced in the column
        accessing functions. This improves readablity by avoiding many
        accesses to the result_array.
- The database driver sql_odbc.c has been improved:
    - The maximum number of concurrent activities is determined. If the
        number of concurrent activities is limited the function
        sqlExecute() fetches all results and stores them in a prefetch
        buffer. This way several prepared statements can be used in
        parallel even when the ODBC driver does not support concurrent
        activities.
    - The structure resultDescrRecord has been introduced. It contains
        the result properties of a prepared statement column. The structure
        resultDataRecord has been reduced to just contain the actual
        data buffer and length of a result field.
    - The functions freeFetchData, freeFetch, freePrefetched and
        processStatementStri have been added. The function
        processStatementStri removes comments from the statement string.
        This avoids problems with some ODBC drivers.
    - The functions bindResultColumn, bindResult, copyNonBlobBuffers,
        moveBlobBuffers, copyFetchData, prefetchOne, prefetchAll and
        doFetch have been added.
    - Now the cursor of a prepared statement is closed (with
        SQLFreeStmt), when a parameter is bound to it.
    - The function sqlColumnFloat has been improved to accept integer
        fields with all sizes.
- The database driver sql_post.c has been improved:
    - The function processBindVarsInStatement has been renamed to
        processStatementStri. Now it removes comments from the statement
        string.
    - The local variable 'param' has been introduced in the parameter
        binding functions. This improves readablity by avoiding many
        accesses to the param_array.
    - The function sqlColumnFloat has been improved to accept integer
        fields with all sizes.
- The example program chkdb.sd7 has been improved. Now it tests several
    corner cases with empty databases, empty statements, comments and
    literals. The tests with integer fields retrieve the fields now also
    as floats.
- Interpreter and compiler have been improved to support the new
    actions SQL_DRIVER, STR_FOR_KEY and STR_FOR_VAR_KEY.
- The library forloop.s7i has been improved to use the new actions
    STR_FOR_KEY and STR_FOR_VAR_KEY.
- Checks for string for loops have been added to chkstr.sd7.
- The library sql_base.s7i has been improved to support the new
    functions driver() and getTableNames(). The function getTableNames
    returns a list of user table names.
- The function sqlDriver has been added to sql_rtl.c.


Since the last announcement here I released version 2019-01-07, with
the following changes:
- A chapter about the handling of errors in interpreter and run-time
    library has been added to the manual.
- The new database driver sql_fire.c has been added. This driver
    provides database access functions for Firebird/InterBase.
- The database drivers sql_lite.c, sql_my.c, sql_odbc.c and sql_post.c
    have been improved to check that all parameters of a prepared
    statement are bound. This check takes place when a prepared statement
    is executed.
- The bind functions in sql_lite.c and sql_my.c have been improved to
    check, that a parameter with the given index exists.
- The bind functions of sql_my.c and sql_odbc.c have been improved to
    allow that the same parameter can be bound again with a different
    bind function (e.g. as integer instead of a bigInteger).
- The database driver sql_lite.c has been improved:
    - The function sqlBindBigRat has been improved to convert a
        bigRational to a double via the decimal representation.
    - The functions sqlColumnBigInt and sqlColumnInt have been improved
        to accept blob values with a decimal content that ends with ".0".
    - The function sqlColumnFloat has been improved to accept integer
        values.
    - The function sqlExecute has been improved to reset a prepared
        statement, when necessary.
- The database driver sql_my.c has been improved:
    - Medium and large blobs are supported now.
    - The function sqlColumnStri() has been improved to read BLOB data.
    - The function processEscapesInStatement() has been introduced. This
        function assures that string literals in prepared statements do not
        allow backslash escape sequences (e.g. \n or \t). This way a
        backslash in a SQL statement has no special meaning (like it is
        common practice in all other SQL databases).
    - The function sqlExecute() has been improved to call
        mysql_stmt_store_result(). This way the complete result set is
        buffered on the client. Doing so avoids the "Commands out of sync"
        error (e.g. which is triggered (without mysql_stmt_store_result()),
        when a new statement is prepared before all data of an old
        statement is fetched).
    - The function resizeBindArray() has been removed.
- The database driver sql_odbc.c has been improved:
    - The function SQLGetTypeInfo is used to determine if the driver
        supports the type SQL_WCHAR.
    - It is recognized when the function SQLDescribeParam() is missing
        and reasonable default values are used instead.
    - The function SQLFreeStmt() is used now without the precondition
        fetchOkay or fetchFinished.
    - The function setupParameterColumn has been introduced. This
        function allocates memory for parameter buffers.
    - One call of SQLDescribeCol() is used to determine the properties of
        result columns instead of many calls of SQLColAttribute().
    - Blob result data is now recognized by data type (SQL_LONGVARCHAR,
        SQL_WLONGVARCHAR or SQL_LONGVARBINARY) instead of data length.
    - The bind functions have been improved to use a switch depending
        on the data type.
    - Calls of SQLBindParameter() have been changed to use parameters
        determined with SQLDescribeParam().
    - At several places switch statements depending on the c_type are
        used.
    - The function sqlColumnDuration has been improved to accept a
        duration in a VARCHAR field.
    - Experimental code to search for an ODBC driver has been added (but
        it is deactivated for now).
- The database driver sql_post.c has been improved:
    - The function setupParameterColumn() has been introduced. This
        function allocates memory for parameter buffers. The buffers are
        part of the bindDataRecord.
    - The conversion of the internal NUMERIC representation to integer,
        float, bigInteger and bigRational values has been improved. Now
        sqlColumnInt() and sqlColumnFloat() can also read NUMERIC data.
    - The functions getNumericAsCStri(), getNumericAsStri(),
        getNumericAsInt(), getNumericAsBigInt(), getNumericAsBigRat()
        and getNumericAsFloat() have been added.
    - The function sqlColumnStri() has been improved to read BLOB data.
    - The memory management has been improved to recogize out of memory
        situations reliable.
    - The handling of exceptions has been improved.
- The function literal() has been added to bigint.s7i, bigrat.s7i,
    boolean.s7i, bstring.s7i, duration.s7i and time.s7i.
- The function integer (it converts a bigInteger to an integer) has
    been added to bigint.s7i.
- The function string (it converts a bstring to a string) has
    been added to bstring.s7i.
- The example program chkdb.sd7 has been improved to test the
    functionality of a database with much more detail. Chkdb.sd7 now
    supports parameters to specify the database to be checked.
- The programs sql7.sd7 and db7.sd7 has been improved to support
    Firebird/Interbase databases.
- The tests of shift operators have been improved in chkbig.sd7.
- The program chkccomp.c has been improved to determine the settings
    for directory access and for the database driver sql_fire.c.
- An #if instruction has been added to dir_win.c, soc_none.c and
    soc_rtl.c, such that the object file can always be linked.
- The function stri_to_cstri8_buf() has been changed to work without
    err_info parameter.
- Experimental code, to avoid the gmp error "overflow in mpz type" for
    shift operations, has been added to big_gmp.c.
- In big_rtl.c, big_gmp.c and big_drv.h the functions bigToInt16(),
    bigToInt32() and bigToInt64() have been changed to have the
    additional parameter err_info.
- The function setupBig() has been added to big_rtl.c and big_gmp.c.
    Additionally interpreter and compiler have been improved to call
    setupBig().
- Documentation comments have been improved in integer.s7i,
    sql_base.s7i, big_gmp.c, big_rtl.c, sql_rtl.c, intlib.c, int_rtl.c
    and striutl.c
- The file soc_dos.c has been renamed to soc_none.c.


Regards,
Thomas Mertes


--
Seed7 Homepage: http://seed7.sourceforge.net
Seed7 - The extensible programming language: User defined statements
and operators, abstract data types, templates without special
syntax, OO with interfaces and multiple dispatch, statically typed,
interpreted or compiled, portable, runs under linux/unix/windows.



Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.