SQLite 3.21 on IBM Mainframe - z/OS

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

SQLite 3.21 on IBM Mainframe - z/OS

Mario Bezzi
Hello,

SQLite 3.21 autoconf (sqlite-autoconf-3210000.zip) compiles and runs
successfully on z/OS 2.2 with few minor modifications which I would like
the developers to consider for integration into the code base.

Namely:

1 - In sqlite3.c, in the code section coming from tokenize.c, the EBCDIC
version of the aiClass[] array defines codepoint 0x15 as class '27'
(CC_ILLEGAL). In EBCDIC (both codepages 037 and 1047, the most common
ones) 0x15 is actually NL (newline) and should be defined as class '7'
CC_SPACE to allow the tokenizer to properly manage multi-line statements.

There are minor issues in the Makefile generated by ./configure:

2 - The ./configure process wrongly detects the presence of the posix
fallocate function, which is not actually available ("checking for
posix_fallocate... yes"), and sets -DHAVE_POSIX_FALLOCATE=1. It should
be -DHAVE_POSIX_FALLOCATE=0. I don't know why this happens as I was not
able to understand what the check does. I will be happy to help
debugging it if guided.

3- In order to successfully compile sqlite3, the C compiler command
(CC=..) should be changed from cc to xlc; the CFLAGS option should be
set to "CFLAGS = -g -qFLOAT=IEEE -qstrict -qdll" and
"-D_XOPEN_SOURCE=600" should be added to the current DEFS.

If needed I have a diff generated pach for 1) and another one for 2) 3)
to make the required changes better understandable.

With these changes the process to build sqlite is as simple as:

1- Upload a non compressed tarball of the autoconf version of SQLite to
a file in your OMVS environment (let say the file is called
sqlite-autoconf-3210000.tar)

 From your OMVS shell issue the following commands

2- pax -ofrom=iso8859-1,to=ibm-1047 -rf sqlite-autoconf-3210000.tar (the
"to" codepage in the pax command must be set to your actual EBCDIC codepage)

3- ./configure --enable-dynamic-extension (I need this option myself but
of course it is not mandatory)

4- for the time being manually apply the changes described above

5- make

Et voilĂ .

At the moment I am testing with the sqlite3 cli, and I can perform
normal operations and load and use dynamic extensions.

I will keep testing and I will report other issues if any.

Hope this helps,

mario

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
Reply | Threaded
Open this post in threaded view
|

Re: SQLite 3.21 on IBM Mainframe - z/OS

mbezzi
Quick update:

The -qdll compiler option, needed to enable dynamic extensions, causes
problems with some SQLite commands. Removing it fixes those problems.
For the time being I've removed the option and I will continue to test.

Thank you,
mario


On 12/25/2017 10:08 PM, Mario Bezzi wrote:

> Hello,
>
> SQLite 3.21 autoconf (sqlite-autoconf-3210000.zip) compiles and runs
> successfully on z/OS 2.2 with few minor modifications which I would
> like the developers to consider for integration into the code base.
>
> Namely:
>
> 1 - In sqlite3.c, in the code section coming from tokenize.c, the
> EBCDIC version of the aiClass[] array defines codepoint 0x15 as class
> '27' (CC_ILLEGAL). In EBCDIC (both codepages 037 and 1047, the most
> common ones) 0x15 is actually NL (newline) and should be defined as
> class '7' CC_SPACE to allow the tokenizer to properly manage
> multi-line statements.
>
> There are minor issues in the Makefile generated by ./configure:
>
> 2 - The ./configure process wrongly detects the presence of the posix
> fallocate function, which is not actually available ("checking for
> posix_fallocate... yes"), and sets -DHAVE_POSIX_FALLOCATE=1. It should
> be -DHAVE_POSIX_FALLOCATE=0. I don't know why this happens as I was
> not able to understand what the check does. I will be happy to help
> debugging it if guided.
>
> 3- In order to successfully compile sqlite3, the C compiler command
> (CC=..) should be changed from cc to xlc; the CFLAGS option should be
> set to "CFLAGS = -g -qFLOAT=IEEE -qstrict -qdll" and
> "-D_XOPEN_SOURCE=600" should be added to the current DEFS.
>
> If needed I have a diff generated pach for 1) and another one for 2)
> 3) to make the required changes better understandable.
>
> With these changes the process to build sqlite is as simple as:
>
> 1- Upload a non compressed tarball of the autoconf version of SQLite
> to a file in your OMVS environment (let say the file is called
> sqlite-autoconf-3210000.tar)
>
> From your OMVS shell issue the following commands
>
> 2- pax -ofrom=iso8859-1,to=ibm-1047 -rf sqlite-autoconf-3210000.tar
> (the "to" codepage in the pax command must be set to your actual
> EBCDIC codepage)
>
> 3- ./configure --enable-dynamic-extension (I need this option myself
> but of course it is not mandatory)
>
> 4- for the time being manually apply the changes described above
>
> 5- make
>
> Et voilĂ .
>
> At the moment I am testing with the sqlite3 cli, and I can perform
> normal operations and load and use dynamic extensions.
>
> I will keep testing and I will report other issues if any.
>
> Hope this helps,
>
> mario
>
>

_______________________________________________
sqlite-users mailing list
[hidden email]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users