Path: csiph.com!goblin2!goblin3!goblin.stu.neva.ru!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: mertesthomas@gmail.com Newsgroups: comp.compilers Subject: Seed7 Release 2019-01-26 Date: Sun, 27 Jan 2019 02:26:23 -0800 (PST) Organization: Compilers Central Lines: 228 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <19-01-010@comp.compilers> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" 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 X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:2152 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.