Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.compilers > #2152 > unrolled thread

Seed7 Release 2019-01-26

Started bymertesthomas@gmail.com
First post2019-01-27 02:26 -0800
Last post2019-01-27 02:26 -0800
Articles 1 — 1 participant

Back to article view | Back to comp.compilers


Contents

  Seed7 Release 2019-01-26 mertesthomas@gmail.com - 2019-01-27 02:26 -0800

#2152 — Seed7 Release 2019-01-26

Frommertesthomas@gmail.com
Date2019-01-27 02:26 -0800
SubjectSeed7 Release 2019-01-26
Message-ID<19-01-010@comp.compilers>
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.

[toc] | [standalone]


Back to top | Article view | comp.compilers


csiph-web