Related articles |
---|
Seed7 Release 2019-01-26 mertesthomas@gmail.com (2019-01-27) |
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.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.