Rocksolid Light

Welcome to Rocksolid Light

mail  files  register  newsreader  groups  login

Message-ID:  

There's a whole WORLD in a mud puddle! -- Doug Clifford


computers / comp.os.vms / VMS databases

SubjectAuthor
* VMS databasesArne Vajhøj
+* Re: VMS databasesArne Vajhøj
|+* Re: VMS databasesJay E. Morris
||+* Re: VMS databasesNeil Rieck
|||`* Re: VMS databasesNeil Rieck
||| +- Re: VMS databasesJohn Reagan
||| `- Re: VMS databasesDavid Jones
||`- Re: VMS databasesScott Dorsey
|+* Re: VMS databasesArne Vajhøj
||+* Re: VMS databasesCraig A. Berry
|||`- Re: VMS databasesArne Vajhøj
||+* Re: VMS databasesNeil Rieck
|||`* Re: VMS databasesArne Vajhøj
||| +- Re: VMS databasesNeil Rieck
||| `* Re: VMS databasesArne Vajhøj
|||  `* Re: VMS databasesNeil Rieck
|||   `- Re: VMS databasesArne Vajhøj
||`- Re: VMS databasesArne Vajhøj
|`* Re: VMS databasesStephen Hoffman
| +* Re: VMS databasesDavid Jones
| |`* Re: VMS databasesNeil Rieck
| | `* Re: VMS databasesArne Vajhøj
| |  `* Re: VMS databasesArne Vajhøj
| |   `* Re: VMS databasesSingle Stage to Orbit
| |    `- Re: VMS databasesJake Hamby (Solid State Jake)
| `* Re: VMS databasesJan-Erik Söderholm
|  `* Re: VMS databasesStephen Hoffman
|   `- Re: VMS databasesArne Vajhøj
+* Re: VMS databasesDavid Jones
|`- Re: VMS databasesArne Vajhøj
`* Re: VMS databasesJake Hamby (Solid State Jake)
 `* Re: VMS databasesArne Vajhøj
  `* Re: VMS databasesDavid Jones
   `- Re: VMS databasesJake Hamby (Solid State Jake)

Pages:12
VMS databases

<uj92tt$312hn$4@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31567&group=comp.os.vms#31567

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: arne@vajhoej.dk (Arne Vajhøj)
Newsgroups: comp.os.vms
Subject: VMS databases
Date: Fri, 17 Nov 2023 20:10:22 -0500
Organization: A noiseless patient Spider
Lines: 12
Message-ID: <uj92tt$312hn$4@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sat, 18 Nov 2023 01:10:21 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="21dd70411cd0bf47483ef30416cee02e";
logging-data="3181111"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18O9FKBM/niystYlENvzh48eAzdtsMyGQs="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:/g2PQo6YNMWN0P8RKjy4zpE26OM=
Content-Language: en-US
 by: Arne Vajhøj - Sat, 18 Nov 2023 01:10 UTC

I just did another little article.

https://www.vajhoej.dk/arne/articles/vmsdbx.html

providing some examples for the databases available on VMS (Rdb, MySQL,
SQLite, Mimer, Derby, H2, HSQLDB) in various programming languages
(Cobol, C, Pascal, Java, Jython, Python, PHP).

Nothing surprising and a lot of overlap with previous
articles, but a different perspective.

Arne

Re: VMS databases

<ujahbq$3b8f1$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31574&group=comp.os.vms#31574

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: arne@vajhoej.dk (Arne Vajhøj)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sat, 18 Nov 2023 09:22:52 -0500
Organization: A noiseless patient Spider
Lines: 54
Message-ID: <ujahbq$3b8f1$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 18 Nov 2023 14:22:50 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="21dd70411cd0bf47483ef30416cee02e";
logging-data="3514849"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18ya90WdJQWN0xMk7EGuDGD3+6FYMN+XUU="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:5UamxxryoSjgKjfCiay7mCzSqA4=
In-Reply-To: <uj92tt$312hn$4@dont-email.me>
Content-Language: en-US
 by: Arne Vajhøj - Sat, 18 Nov 2023 14:22 UTC

On 11/17/2023 8:10 PM, Arne Vajhøj wrote:
> I just did another little article.
>
> https://www.vajhoej.dk/arne/articles/vmsdbx.html
>
> providing some examples for the databases available on VMS (Rdb, MySQL,
> SQLite, Mimer, Derby, H2, HSQLDB) in various programming languages
> (Cobol, C, Pascal, Java, Jython, Python, PHP).
>
> Nothing surprising and a lot of overlap with previous
> articles, but a different perspective.

Niel Rieck replied (for some reason the post did not propagate
to eternal-september, so this is a manual copy from Google Groups):

> Two additional points.
>
> 1) I've done a bit of hacking with SQLite (on both OpenVMS + Linux )
> and can inform that it should only be used in single user
> applications. When any process issues an "update table" command, all
> other processes are locked out.

For multi user scenarios database servers are usually better than
embedded databases.

I would have thougth SQLite could only have locked some part of
the database when doing an UPDATE, but ...

> 2) Back in 2016 I received a copy of MariaDB-5.5 for OpenVMS Itanium
> from Mark Berryman. Since 90% of our VMS stuff is written in BASIC, I
> spent more than a few days trying to glue Mark's client code to my
> BASIC programs (we are in the process of moving our data from RMS to
> MariaDB). Linking the object files was fairly easy using Mark's
> instructions. Trying to pass string arrays from C to BASIC was a
> little more difficult. My eventual solution involved created string
> arrays in a BASIC declared COMMON then had C employ str$get1_dx() to
> copy the data back. I would be interested to learn if you had a better
> method.

> https://neilrieck.net/demo_vms_html/mysql_api_demo14_c.html
> (crude c demo)
> https://neilrieck.net/demo_vms_html/mysql_demo14_bas.html
> (crude BASIC demo)

VMS Basic is as it is and the libmysql API is what it is and
any solution is constrained by that.

I do not have any magic solution for the problem. I would
probably have made the API differently (but differently does
not necessarily mean better).

Arne

Re: VMS databases

<ujajs7$3bls0$1@epsilon3.eternal-september.org>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31575&group=comp.os.vms#31575

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!epsilon3.eternal-september.org!.POSTED!not-for-mail
From: morrisj@epsilon3.comcon (Jay E. Morris)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sat, 18 Nov 2023 09:05:41 -0600
Organization: very little if any
Lines: 11
Message-ID: <ujajs7$3bls0$1@epsilon3.eternal-september.org>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 18 Nov 2023 15:05:43 -0000 (UTC)
Injection-Info: epsilon3.eternal-september.org; posting-host="3ba0e3e38c28608f9019c2c84d419384";
logging-data="3528576"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/PzT4cdTFJHELDAMWCCXnc4MBekIs9+y0="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:XhBV6iRYzcEfItmbv5SYh/y8POI=
Content-Language: en-US
In-Reply-To: <ujahbq$3b8f1$1@dont-email.me>
X-Antivirus: AVG (VPS 231118-0, 11/17/2023), Outbound message
X-Antivirus-Status: Clean
 by: Jay E. Morris - Sat, 18 Nov 2023 15:05 UTC

On 11/18/2023 8:22 AM, Arne Vajhøj wrote:
> Niel Rieck replied (for some reason the post did not propagate
> to eternal-september, so this is a manual copy from Google Groups):

Ray has had to disconnect GG for a day or two at a time while he deals
with fine tuning Spam Assassin. Some of the worst hit groups are getting
over 5000 spam messages a day, the greatest majority of them from GG.

In fact, the majority of them may be coming from one spammer on GG. I
haven't gone to look but I understand he's currently taunting Ray on
es.support.

Re: VMS databases

<9f8f7d9a-7887-4f48-ad4c-f61090b1a577n@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31577&group=comp.os.vms#31577

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:a05:620a:19a4:b0:777:7196:378f with SMTP id bm36-20020a05620a19a400b007777196378fmr64103qkb.7.1700324480826;
Sat, 18 Nov 2023 08:21:20 -0800 (PST)
X-Received: by 2002:a05:6a00:2803:b0:6bd:3157:2df3 with SMTP id
bl3-20020a056a00280300b006bd31572df3mr630363pfb.1.1700324480414; Sat, 18 Nov
2023 08:21:20 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sat, 18 Nov 2023 08:21:19 -0800 (PST)
In-Reply-To: <ujajs7$3bls0$1@epsilon3.eternal-september.org>
Injection-Info: google-groups.googlegroups.com; posting-host=70.30.63.110; posting-account=QqCTBgkAAACie99dBE6oFauYH8hE6sk0
NNTP-Posting-Host: 70.30.63.110
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me> <ujajs7$3bls0$1@epsilon3.eternal-september.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9f8f7d9a-7887-4f48-ad4c-f61090b1a577n@googlegroups.com>
Subject: Re: VMS databases
From: n.rieck@bell.net (Neil Rieck)
Injection-Date: Sat, 18 Nov 2023 16:21:20 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 2278
 by: Neil Rieck - Sat, 18 Nov 2023 16:21 UTC

On Saturday, November 18, 2023 at 10:05:47 AM UTC-5, Jay E. Morris wrote:
> On 11/18/2023 8:22 AM, Arne Vajhøj wrote:
> > Niel Rieck replied (for some reason the post did not propagate
> > to eternal-september, so this is a manual copy from Google Groups):
> Ray has had to disconnect GG for a day or two at a time while he deals
> with fine tuning Spam Assassin. Some of the worst hit groups are getting
> over 5000 spam messages a day, the greatest majority of them from GG.
>
> In fact, the majority of them may be coming from one spammer on GG. I
> haven't gone to look but I understand he's currently taunting Ray on
> es.support.

Curious. I woke up today with an idea to check two others groups that I'm a member of.

These groups appear to be clear of the spam seen in comp.os.cov which means that the spamers are being selective.

https://groups.google.com/g/bluegriffon
https://groups.google.com/g/alt.fan.blade-runner

Neil Rieck
Waterloo, Ontario, Canada.
https://neilrieck.net/OpenVMS-Programmers-Corner.html

Re: VMS databases

<b3e03596-8491-4259-b1ca-5432a3d33158n@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31578&group=comp.os.vms#31578

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:ad4:4d07:0:b0:66d:3111:2918 with SMTP id l7-20020ad44d07000000b0066d31112918mr57470qvl.9.1700325721926;
Sat, 18 Nov 2023 08:42:01 -0800 (PST)
X-Received: by 2002:aa7:8216:0:b0:693:384d:1710 with SMTP id
k22-20020aa78216000000b00693384d1710mr703856pfi.6.1700325721576; Sat, 18 Nov
2023 08:42:01 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sat, 18 Nov 2023 08:42:00 -0800 (PST)
In-Reply-To: <9f8f7d9a-7887-4f48-ad4c-f61090b1a577n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=70.30.63.110; posting-account=QqCTBgkAAACie99dBE6oFauYH8hE6sk0
NNTP-Posting-Host: 70.30.63.110
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujajs7$3bls0$1@epsilon3.eternal-september.org> <9f8f7d9a-7887-4f48-ad4c-f61090b1a577n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b3e03596-8491-4259-b1ca-5432a3d33158n@googlegroups.com>
Subject: Re: VMS databases
From: n.rieck@bell.net (Neil Rieck)
Injection-Date: Sat, 18 Nov 2023 16:42:01 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 3294
 by: Neil Rieck - Sat, 18 Nov 2023 16:42 UTC

On Saturday, November 18, 2023 at 11:21:22 AM UTC-5, Neil Rieck wrote:
> On Saturday, November 18, 2023 at 10:05:47 AM UTC-5, Jay E. Morris wrote:
> > On 11/18/2023 8:22 AM, Arne Vajhøj wrote:
> > > Niel Rieck replied (for some reason the post did not propagate
> > > to eternal-september, so this is a manual copy from Google Groups):
> > Ray has had to disconnect GG for a day or two at a time while he deals
> > with fine tuning Spam Assassin. Some of the worst hit groups are getting
> > over 5000 spam messages a day, the greatest majority of them from GG.
> >
> > In fact, the majority of them may be coming from one spammer on GG. I
> > haven't gone to look but I understand he's currently taunting Ray on
> > es.support.
> Curious. I woke up today with an idea to check two others groups that I'm a member of.
>
> These groups appear to be clear of the spam seen in comp.os.cov which means that the spamers are being selective.
>
> https://groups.google.com/g/bluegriffon
> https://groups.google.com/g/alt.fan.blade-runner
> Neil Rieck
> Waterloo, Ontario, Canada.
> https://neilrieck.net/OpenVMS-Programmers-Corner.html

RE: SPAM

FYI, every time I visit https://groups.google.com/g/comp.os.vms/ I make it my duty to mark at least 120 pieces of SPAM.

This is easier then you might think. You just click the square box at the top of the page (which selects 30 items), then do a quick scan of items you wish to deselect (they are few), then click the blue circle containing an exclamation. A popup menu will appear, select an item, then click "submit report". Bang. 30 items now flagged.

Not sure if google is running any A.I. to make sense of all this, but Google is now presenting an "I am not a robot" dialog for any submission or reply to cov

Perhaps google will take more action if others repeat what I am doing.

Neil Rieck
Waterloo, Ontario, Canada.
https://neilrieck.net

Re: VMS databases

<ujb25b$qav$1@panix2.panix.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31581&group=comp.os.vms#31581

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!panix!.POSTED.panix2.panix.com!panix2.panix.com!not-for-mail
From: kludge@panix.com (Scott Dorsey)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: 18 Nov 2023 19:09:31 -0000
Organization: Former users of Netcom shell (1989-2000)
Lines: 15
Message-ID: <ujb25b$qav$1@panix2.panix.com>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me> <ujajs7$3bls0$1@epsilon3.eternal-september.org>
Injection-Info: reader2.panix.com; posting-host="panix2.panix.com:166.84.1.2";
logging-data="7569"; mail-complaints-to="abuse@panix.com"
 by: Scott Dorsey - Sat, 18 Nov 2023 19:09 UTC

In article <ujajs7$3bls0$1@epsilon3.eternal-september.org>,
Jay E. Morris <morrisj@epsilon3.comcon> wrote:
>On 11/18/2023 8:22 AM, Arne Vajhøj wrote:
>> Niel Rieck replied (for some reason the post did not propagate
>> to eternal-september, so this is a manual copy from Google Groups):
>
>Ray has had to disconnect GG for a day or two at a time while he deals
>with fine tuning Spam Assassin. Some of the worst hit groups are getting
>over 5000 spam messages a day, the greatest majority of them from GG.

All of them from GG. In fact, I would probably not be out of line to say
that all Usenet spam in the past decade has been from GG. All of it.
--scott
--
"C'est un Nagra. C'est suisse, et tres, tres precis."

Re: VMS databases

<e222817d-9c1e-4d2f-ae98-0194cc978337n@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31582&group=comp.os.vms#31582

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:ad4:4f0b:0:b0:66a:c233:5e87 with SMTP id fb11-20020ad44f0b000000b0066ac2335e87mr69443qvb.2.1700341554577;
Sat, 18 Nov 2023 13:05:54 -0800 (PST)
X-Received: by 2002:a17:902:ef87:b0:1cc:2ffe:5a27 with SMTP id
iz7-20020a170902ef8700b001cc2ffe5a27mr861447plb.9.1700341554184; Sat, 18 Nov
2023 13:05:54 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sat, 18 Nov 2023 13:05:53 -0800 (PST)
In-Reply-To: <uj92tt$312hn$4@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=104.231.150.181; posting-account=CO-_tAoAAACjjs2KLAw3xVKCy6Z_J3VK
NNTP-Posting-Host: 104.231.150.181
References: <uj92tt$312hn$4@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <e222817d-9c1e-4d2f-ae98-0194cc978337n@googlegroups.com>
Subject: Re: VMS databases
From: osuvman50@gmail.com (David Jones)
Injection-Date: Sat, 18 Nov 2023 21:05:54 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 1756
 by: David Jones - Sat, 18 Nov 2023 21:05 UTC

On Friday, November 17, 2023 at 8:10:25 PM UTC-5, Arne Vajhøj wrote:
> I just did another little article.
>
> https://www.vajhoej.dk/arne/articles/vmsdbx.html
>
> providing some examples for the databases available on VMS (Rdb, MySQL,
> SQLite, Mimer, Derby, H2, HSQLDB) in various programming languages
> (Cobol, C, Pascal, Java, Jython, Python, PHP).
>
> Nothing surprising and a lot of overlap with previous
> articles, but a different perspective.
>
> Arne
Python can use the pysqlite module to interface to SQLite using Python's
DB API. This API supports several other databases as well.

Re: VMS databases

<8106f2f5-2660-4644-a94a-7e8a00d21444n@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31583&group=comp.os.vms#31583

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:a05:620a:159a:b0:778:9259:9883 with SMTP id d26-20020a05620a159a00b0077892599883mr71118qkk.2.1700341930317;
Sat, 18 Nov 2023 13:12:10 -0800 (PST)
X-Received: by 2002:a17:90a:bb91:b0:283:942c:a55 with SMTP id
v17-20020a17090abb9100b00283942c0a55mr885030pjr.7.1700341929948; Sat, 18 Nov
2023 13:12:09 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sat, 18 Nov 2023 13:12:09 -0800 (PST)
In-Reply-To: <b3e03596-8491-4259-b1ca-5432a3d33158n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=73.60.222.222; posting-account=M3IgSwoAAADJd6EnOmsrCCfB6_OyTOkv
NNTP-Posting-Host: 73.60.222.222
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujajs7$3bls0$1@epsilon3.eternal-september.org> <9f8f7d9a-7887-4f48-ad4c-f61090b1a577n@googlegroups.com>
<b3e03596-8491-4259-b1ca-5432a3d33158n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8106f2f5-2660-4644-a94a-7e8a00d21444n@googlegroups.com>
Subject: Re: VMS databases
From: xyzzy1959@gmail.com (John Reagan)
Injection-Date: Sat, 18 Nov 2023 21:12:10 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 3559
 by: John Reagan - Sat, 18 Nov 2023 21:12 UTC

On Saturday, November 18, 2023 at 11:42:03 AM UTC-5, Neil Rieck wrote:
> On Saturday, November 18, 2023 at 11:21:22 AM UTC-5, Neil Rieck wrote:
> > On Saturday, November 18, 2023 at 10:05:47 AM UTC-5, Jay E. Morris wrote:
> > > On 11/18/2023 8:22 AM, Arne Vajhøj wrote:
> > > > Niel Rieck replied (for some reason the post did not propagate
> > > > to eternal-september, so this is a manual copy from Google Groups):
> > > Ray has had to disconnect GG for a day or two at a time while he deals
> > > with fine tuning Spam Assassin. Some of the worst hit groups are getting
> > > over 5000 spam messages a day, the greatest majority of them from GG.
> > >
> > > In fact, the majority of them may be coming from one spammer on GG. I
> > > haven't gone to look but I understand he's currently taunting Ray on
> > > es.support.
> > Curious. I woke up today with an idea to check two others groups that I'm a member of.
> >
> > These groups appear to be clear of the spam seen in comp.os.cov which means that the spamers are being selective.
> >
> > https://groups.google.com/g/bluegriffon
> > https://groups.google.com/g/alt.fan.blade-runner
> > Neil Rieck
> > Waterloo, Ontario, Canada.
> > https://neilrieck.net/OpenVMS-Programmers-Corner.html" rel="nofollow" target="_blank">https://neilrieck.net/OpenVMS-Programmers-Corner.html
> RE: SPAM
>
> FYI, every time I visit https://groups.google.com/g/comp.os.vms/ I make it my duty to mark at least 120 pieces of SPAM.
>
> This is easier then you might think. You just click the square box at the top of the page (which selects 30 items), then do a quick scan of items you wish to deselect (they are few), then click the blue circle containing an exclamation. A popup menu will appear, select an item, then click "submit report". Bang. 30 items now flagged.
>
> Not sure if google is running any A.I. to make sense of all this, but Google is now presenting an "I am not a robot" dialog for any submission or reply to cov
>
> Perhaps google will take more action if others repeat what I am doing.
> Neil Rieck
> Waterloo, Ontario, Canada.
> https://neilrieck.net
I do the same.

Re: VMS databases

<c08afc02-4ac5-487d-80b7-280bfd401608n@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31585&group=comp.os.vms#31585

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:a0c:c612:0:b0:66f:bc1a:7a77 with SMTP id v18-20020a0cc612000000b0066fbc1a7a77mr72092qvi.11.1700343372167;
Sat, 18 Nov 2023 13:36:12 -0800 (PST)
X-Received: by 2002:a05:6a00:8611:b0:6c3:9efc:6747 with SMTP id
hg17-20020a056a00861100b006c39efc6747mr877212pfb.3.1700343371822; Sat, 18 Nov
2023 13:36:11 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sat, 18 Nov 2023 13:36:11 -0800 (PST)
In-Reply-To: <b3e03596-8491-4259-b1ca-5432a3d33158n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=104.231.150.181; posting-account=CO-_tAoAAACjjs2KLAw3xVKCy6Z_J3VK
NNTP-Posting-Host: 104.231.150.181
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujajs7$3bls0$1@epsilon3.eternal-september.org> <9f8f7d9a-7887-4f48-ad4c-f61090b1a577n@googlegroups.com>
<b3e03596-8491-4259-b1ca-5432a3d33158n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <c08afc02-4ac5-487d-80b7-280bfd401608n@googlegroups.com>
Subject: Re: VMS databases
From: osuvman50@gmail.com (David Jones)
Injection-Date: Sat, 18 Nov 2023 21:36:12 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 1991
 by: David Jones - Sat, 18 Nov 2023 21:36 UTC

On Saturday, November 18, 2023 at 11:42:03 AM UTC-5, Neil Rieck wrote:

> Not sure if google is running any A.I. to make sense of all this, but Google is now presenting an "I am not a robot" dialog for any submission or reply to cov
>
> Perhaps google will take more action if others repeat what I am doing.
> Neil Rieck
> Waterloo, Ontario, Canada.
> https://neilrieck.net

Sometime I wonder if the spammers get notice of the spam complaints and make it a higher value target since the complaints are evidence that the spam is reaching eyeballs.

The spam appears to be coming from India, which doesn't need to use robots.

Re: VMS databases

<ujbie6$3gndc$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31587&group=comp.os.vms#31587

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: arne@vajhoej.dk (Arne Vajhøj)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sat, 18 Nov 2023 18:47:18 -0500
Organization: A noiseless patient Spider
Lines: 187
Message-ID: <ujbie6$3gndc$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 18 Nov 2023 23:47:18 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="686a48515a4797b1a6e763fd0579756f";
logging-data="3693996"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/XolYSxzemxUAKhZkJDTZl7tdTq3omxhc="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:uWj7ooQwIw6j5WY+go0U84gy7V8=
In-Reply-To: <ujahbq$3b8f1$1@dont-email.me>
Content-Language: en-US
 by: Arne Vajhøj - Sat, 18 Nov 2023 23:47 UTC

On 11/18/2023 9:22 AM, Arne Vajhøj wrote:
> On 11/17/2023 8:10 PM, Arne Vajhøj wrote:
>> I just did another little article.
>>
>> https://www.vajhoej.dk/arne/articles/vmsdbx.html
>>
>> providing some examples for the databases available on VMS (Rdb, MySQL,
>> SQLite, Mimer, Derby, H2, HSQLDB) in various programming languages
>> (Cobol, C, Pascal, Java, Jython, Python, PHP).
>>
>> Nothing surprising and a lot of overlap with previous
>> articles, but a different perspective.
>
> Niel Rieck replied (for some reason the post did not propagate
> to eternal-september, so this is a manual copy from Google Groups):
>
> > Two additional points.
> >
> > 1) I've done a bit of hacking with SQLite (on both OpenVMS + Linux )
> > and can inform that it should only be used in single user
> > applications. When any process issues an "update table" command, all
> > other processes are locked out.
>
> For multi user scenarios database servers are usually better than
> embedded databases.
>
> I would have thougth SQLite could only have locked some part of
> the database when doing an UPDATE, but ...
>
> > 2) Back in 2016 I received a copy of MariaDB-5.5 for OpenVMS Itanium
> > from Mark Berryman. Since 90% of our VMS stuff is written in BASIC, I
> > spent more than a few days trying to glue Mark's client code to my
> > BASIC programs (we are in the process of moving our data from RMS to
> > MariaDB). Linking the object files was fairly easy using Mark's
> > instructions. Trying to pass string arrays from C to BASIC was a
> > little more difficult. My eventual solution involved created string
> > arrays in a BASIC declared COMMON then had C employ str$get1_dx() to
> > copy the data back. I would be interested to learn if you had a better
> > method.
>
> > https://neilrieck.net/demo_vms_html/mysql_api_demo14_c.html
> > (crude c demo)
> > https://neilrieck.net/demo_vms_html/mysql_demo14_bas.html
> > (crude BASIC demo)
>
> VMS Basic is as it is and the libmysql API is what it is and
> any solution is constrained by that.
>
> I do not have any magic solution for the problem. I would
> probably have made the API differently (but differently does
> not necessarily mean better).

I could not resist trying.

This is first attempt. But I think it is a relative clean API.

$ type list.bas
program main

option type = explicit

declare integer dbcon, stmt, outparam
declare integer f1
declare string f2

%include "b.bas"

dbcon = bmysql_open("localhost", 3306, "root", "", "test")
stmt = bmysql_stmt_prepare(dbcon, "SELECT f1,f2 FROM t1")
outparam = bmysql_outparam_init(2)
call bmysql_outparam_integer(outparam, 0, f1)
call bmysql_outparam_string(outparam, 1, f2)
call bmysql_stmt_execute(stmt, 0, outparam)
while bmysql_stmt_fetch(stmt, outparam) = 0
print f1, "|" + f2 + "|"
next
call bmysql_outparam_free(outparam)
call bmysql_stmt_free(stmt)
call bmysql_close(dbcon)

end program
$ bas list
$ link list + b/opt
$ type list2.bas
program main

option type = explicit

declare integer dbcon, stmt, inparam, outparam
declare integer f1
declare string f2

%include "b.bas"

dbcon = bmysql_open("localhost", 3306, "root", "", "test")
stmt = bmysql_stmt_prepare(dbcon, "SELECT f1 FROM t1 WHERE f2 LIKE ?")
f2 = "B%"
inparam = bmysql_inparam_init(1)
call bmysql_inparam_string(inparam, 0, f2)
outparam = bmysql_outparam_init(1)
call bmysql_outparam_integer(outparam, 0, f1)
call bmysql_stmt_execute(stmt, inparam, outparam)
while bmysql_stmt_fetch(stmt, outparam) = 0
print f1
next
call bmysql_outparam_free(inparam)
call bmysql_outparam_free(outparam)
call bmysql_stmt_free(stmt)
call bmysql_close(dbcon)

end program
$ bas list2
$ link list2 + b/opt
$ type add.bas
program main

option type = explicit

declare integer dbcon, stmt, inparam
declare integer f1
declare string f2

%include "b.bas"

dbcon = bmysql_open("localhost", 3306, "root", "", "test")
stmt = bmysql_stmt_prepare(dbcon, "INSERT INTO t1 VALUES(?,?)")
f1 = 4
f2 = "DDDD"
inparam = bmysql_inparam_init(2)
call bmysql_inparam_integer(inparam, 0, f1)
call bmysql_inparam_string(inparam, 1, f2)
call bmysql_stmt_execute(stmt, inparam, 0)
call bmysql_inparam_free(inparam)
call bmysql_stmt_free(stmt)
call bmysql_close(dbcon)

end program
$ bas add
$ link add + b/opt
$ type del.bas
program main

option type = explicit

declare integer dbcon, stmt, inparam
declare integer f1

%include "b.bas"

dbcon = bmysql_open("localhost", 3306, "root", "", "test")
stmt = bmysql_stmt_prepare(dbcon, "DELETE FROM t1 WHERE f1 = ?")
f1 = 4
inparam = bmysql_inparam_init(1)
call bmysql_inparam_integer(inparam, 0, f1)
call bmysql_stmt_execute(stmt, inparam, 0)
call bmysql_inparam_free(inparam)
call bmysql_stmt_free(stmt)
call bmysql_close(dbcon)

end program
$ bas del
$ link del + b/opt
$ run list
1 |A|
2 |BB|
3 |CCC|
$ run list2
2
$ run add
$ run list
1 |A|
2 |BB|
3 |CCC|
4 |DDDD|
$ run list2
2
$ run del
$ run list
1 |A|
2 |BB|
3 |CCC|
$ run list2
2

Arne

Re: VMS databases

<65594f8c$0$718$14726298@news.sunsite.dk>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31588&group=comp.os.vms#31588

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!dotsrc.org!filter.dotsrc.org!news.dotsrc.org!not-for-mail
Date: Sat, 18 Nov 2023 18:58:05 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: VMS databases
Newsgroups: comp.os.vms
References: <uj92tt$312hn$4@dont-email.me>
<e222817d-9c1e-4d2f-ae98-0194cc978337n@googlegroups.com>
Content-Language: en-US
From: arne@vajhoej.dk (Arne Vajhøj)
In-Reply-To: <e222817d-9c1e-4d2f-ae98-0194cc978337n@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 24
Message-ID: <65594f8c$0$718$14726298@news.sunsite.dk>
Organization: SunSITE.dk - Supporting Open source
NNTP-Posting-Host: 5c78b397.news.sunsite.dk
X-Trace: 1700351884 news.sunsite.dk 718 arne@vajhoej.dk/68.9.63.232:50162
X-Complaints-To: staff@sunsite.dk
 by: Arne Vajhøj - Sat, 18 Nov 2023 23:58 UTC

On 11/18/2023 4:05 PM, David Jones wrote:
> On Friday, November 17, 2023 at 8:10:25 PM UTC-5, Arne Vajhøj wrote:
>> I just did another little article.
>>
>> https://www.vajhoej.dk/arne/articles/vmsdbx.html
>>
>> providing some examples for the databases available on VMS (Rdb, MySQL,
>> SQLite, Mimer, Derby, H2, HSQLDB) in various programming languages
>> (Cobol, C, Pascal, Java, Jython, Python, PHP).
>>
>> Nothing surprising and a lot of overlap with previous
>> articles, but a different perspective.
>>
> Python can use the pysqlite module to interface to SQLite using Python's
> DB API. This API supports several other databases as well.

Python DB API 2.0 is covered under standard API.

Python example with Rdb and SQLite demo. And MySQL present
but out commented because module not installed on the test system.
And Jython with 6 databases demoed.

Arne

Re: VMS databases

<ujbjff$3gru9$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31589&group=comp.os.vms#31589

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!news.furie.org.uk!usenet.goja.nl.eu.org!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: craigberry@nospam.mac.com (Craig A. Berry)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sat, 18 Nov 2023 18:04:57 -0600
Organization: A noiseless patient Spider
Lines: 219
Message-ID: <ujbjff$3gru9$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujbie6$3gndc$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 19 Nov 2023 00:05:04 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="963010a4e289525a38044b3cec027e2c";
logging-data="3698633"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+gJWpo5hEUxVfciM5IamncDUT1WifBgKI="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:zLDVyxKrvr53PHX74bVZLOUO9Jo=
Content-Language: en-US
In-Reply-To: <ujbie6$3gndc$1@dont-email.me>
 by: Craig A. Berry - Sun, 19 Nov 2023 00:04 UTC

On 11/18/23 5:47 PM, Arne Vajhøj wrote:
> On 11/18/2023 9:22 AM, Arne Vajhøj wrote:
>> On 11/17/2023 8:10 PM, Arne Vajhøj wrote:
>>> I just did another little article.
>>>
>>> https://www.vajhoej.dk/arne/articles/vmsdbx.html
>>>
>>> providing some examples for the databases available on VMS (Rdb, MySQL,
>>> SQLite, Mimer, Derby, H2, HSQLDB) in various programming languages
>>> (Cobol, C, Pascal, Java, Jython, Python, PHP).
>>>
>>> Nothing surprising and a lot of overlap with previous
>>> articles, but a different perspective.
>>
>> Niel Rieck replied (for some reason the post did not propagate
>> to eternal-september, so this is a manual copy from Google Groups):
>>
>>  > Two additional points.
>>  >
>>  > 1) I've done a bit of hacking with SQLite (on both OpenVMS + Linux )
>>  > and can inform that it should only be used in single user
>>  > applications. When any process issues an "update table" command, all
>>  > other processes are locked out.
>>
>> For multi user scenarios database servers are usually better than
>> embedded databases.
>>
>> I would have thougth SQLite could only have locked some part of
>> the database when doing an UPDATE, but ...
>>
>>  > 2) Back in 2016 I received a copy of MariaDB-5.5 for OpenVMS Itanium
>>  > from Mark Berryman. Since 90% of our VMS stuff is written in BASIC, I
>>  > spent more than a few days trying to glue Mark's client code to my
>>  > BASIC programs (we are in the process of moving our data from RMS to
>>  > MariaDB). Linking the object files was fairly easy using Mark's
>>  > instructions. Trying to pass string arrays from C to BASIC was a
>>  > little more difficult. My eventual solution involved created string
>>  > arrays in a BASIC declared COMMON then had C employ str$get1_dx() to
>>  > copy the data back. I would be interested to learn if you had a better
>>  > method.
>>
>>  > https://neilrieck.net/demo_vms_html/mysql_api_demo14_c.html
>>  > (crude c demo)
>>  > https://neilrieck.net/demo_vms_html/mysql_demo14_bas.html
>>  > (crude BASIC demo)
>>
>> VMS Basic is as it is and the libmysql API is what it is and
>> any solution is constrained by that.
>>
>> I do not have any magic solution for the problem. I would
>> probably have made the API differently (but differently does
>> not necessarily mean better).
>
> I could not resist trying.
>
> This is first attempt. But I think it is a relative clean API.
>
> $ type list.bas
> program main
>
> option type = explicit
>
> declare integer dbcon, stmt, outparam
> declare integer f1
> declare string f2
>
> %include "b.bas"
>
> dbcon = bmysql_open("localhost", 3306, "root", "", "test")
> stmt = bmysql_stmt_prepare(dbcon, "SELECT f1,f2 FROM t1")
> outparam = bmysql_outparam_init(2)
> call bmysql_outparam_integer(outparam, 0, f1)
> call bmysql_outparam_string(outparam, 1, f2)
> call bmysql_stmt_execute(stmt, 0, outparam)
> while bmysql_stmt_fetch(stmt, outparam) = 0
>    print f1, "|" + f2 + "|"
> next
> call bmysql_outparam_free(outparam)
> call bmysql_stmt_free(stmt)
> call bmysql_close(dbcon)
>
> end program
> $ bas list
> $ link list + b/opt
> $ type list2.bas
> program main
>
> option type = explicit
>
> declare integer dbcon, stmt, inparam, outparam
> declare integer f1
> declare string f2
>
> %include "b.bas"
>
> dbcon = bmysql_open("localhost", 3306, "root", "", "test")
> stmt = bmysql_stmt_prepare(dbcon, "SELECT f1 FROM t1 WHERE f2 LIKE ?")
> f2 = "B%"
> inparam = bmysql_inparam_init(1)
> call bmysql_inparam_string(inparam, 0, f2)
> outparam = bmysql_outparam_init(1)
> call bmysql_outparam_integer(outparam, 0, f1)
> call bmysql_stmt_execute(stmt, inparam, outparam)
> while bmysql_stmt_fetch(stmt, outparam) = 0
>    print f1
> next
> call bmysql_outparam_free(inparam)
> call bmysql_outparam_free(outparam)
> call bmysql_stmt_free(stmt)
> call bmysql_close(dbcon)
>
> end program
> $ bas list2
> $ link list2 + b/opt
> $ type add.bas
> program main
>
> option type = explicit
>
> declare integer dbcon, stmt, inparam
> declare integer f1
> declare string f2
>
> %include "b.bas"
>
> dbcon = bmysql_open("localhost", 3306, "root", "", "test")
> stmt = bmysql_stmt_prepare(dbcon, "INSERT INTO t1 VALUES(?,?)")
> f1 = 4
> f2 = "DDDD"
> inparam = bmysql_inparam_init(2)
> call bmysql_inparam_integer(inparam, 0, f1)
> call bmysql_inparam_string(inparam, 1, f2)
> call bmysql_stmt_execute(stmt, inparam, 0)
> call bmysql_inparam_free(inparam)
> call bmysql_stmt_free(stmt)
> call bmysql_close(dbcon)
>
> end program
> $ bas add
> $ link add + b/opt
> $ type del.bas
> program main
>
> option type = explicit
>
> declare integer dbcon, stmt, inparam
> declare integer f1
>
> %include "b.bas"
>
> dbcon = bmysql_open("localhost", 3306, "root", "", "test")
> stmt = bmysql_stmt_prepare(dbcon, "DELETE FROM t1 WHERE f1 = ?")
> f1 = 4
> inparam = bmysql_inparam_init(1)
> call bmysql_inparam_integer(inparam, 0, f1)
> call bmysql_stmt_execute(stmt, inparam, 0)
> call bmysql_inparam_free(inparam)
> call bmysql_stmt_free(stmt)
> call bmysql_close(dbcon)
>
> end program
> $ bas del
> $ link del + b/opt
> $ run list
>  1            |A|
>  2            |BB|
>  3            |CCC|
> $ run list2
>  2
> $ run add
> $ run list
>  1            |A|
>  2            |BB|
>  3            |CCC|
>  4            |DDDD|
> $ run list2
>  2
> $ run del
> $ run list
>  1            |A|
>  2            |BB|
>  3            |CCC|
> $ run list2
>  2

On a semi-related note, I once wrote wrappers around some of the socket
routines so I could call them from BASIC. recv looked like this:

#define BASIC_True -1
#define BASIC_False 0

int
mytcp_recv( int *sockfd,
struct dsc$descriptor_d *msg_dsc,
int *bytes_read,
struct dsc$descriptor_d *errmsg_dsc ) {

*bytes_read = recv( *sockfd,
msg_dsc->dsc$a_pointer,
msg_dsc->dsc$w_length,
0 );

if ( *bytes_read < 0 ) {
/* other error reporting */
return(BASIC_False);
}

return(BASIC_True);
}

Call it from BASIC like so:

EXTERNAL LONG FUNCTION MYTCP_RECV( LONG BY REF, STRING BY DESC, LONG
BY REF, STRING BY DESC )
SOCKET_SUCCESS = MYTCP_RECV( SOCKET, MESSAGE, DATA_LENGTH, ERRMSG )

I think it took me a bit to wise up to the fact that BASIC's descriptors
are dynamic and needed the dsc$descriptor_d declarations.

Re: VMS databases

<ujbmhf$3h67r$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31590&group=comp.os.vms#31590

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: arne@vajhoej.dk (Arne Vajhøj)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sat, 18 Nov 2023 19:57:20 -0500
Organization: A noiseless patient Spider
Lines: 50
Message-ID: <ujbmhf$3h67r$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujbie6$3gndc$1@dont-email.me> <ujbjff$3gru9$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 19 Nov 2023 00:57:19 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="686a48515a4797b1a6e763fd0579756f";
logging-data="3709179"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+toDlvv7mprRpTFdTI+kqrmSDX7+KmWKM="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:3cSnUs3Sq6cL+jMsqAoNvtDa5CA=
Content-Language: en-US
In-Reply-To: <ujbjff$3gru9$1@dont-email.me>
 by: Arne Vajhøj - Sun, 19 Nov 2023 00:57 UTC

On 11/18/2023 7:04 PM, Craig A. Berry wrote:
> On a semi-related note, I once wrote wrappers around some of the socket
> routines so I could call them from BASIC.  recv looked like this:
>
> #define BASIC_True -1
> #define BASIC_False 0
>
> int
> mytcp_recv( int *sockfd,
>              struct dsc$descriptor_d *msg_dsc,
>              int *bytes_read,
>              struct dsc$descriptor_d *errmsg_dsc ) {
>
>     *bytes_read = recv( *sockfd,
>                         msg_dsc->dsc$a_pointer,
>                         msg_dsc->dsc$w_length,
>                         0 );
>
>     if ( *bytes_read < 0 ) {
>         /* other error reporting */
>         return(BASIC_False);
>     }
>
>     return(BASIC_True);
> }
>
> Call it from BASIC like so:
>
>   EXTERNAL LONG FUNCTION MYTCP_RECV(  LONG BY REF, STRING BY DESC, LONG
> BY REF, STRING BY DESC )
>   SOCKET_SUCCESS = MYTCP_RECV( SOCKET, MESSAGE, DATA_LENGTH, ERRMSG )
>
> I think it took me a bit to wise up to the fact that BASIC's descriptors
> are dynamic and needed the dsc$descriptor_d declarations.

I know that.

For moving data into the Basic string I use:

static void bstr(char *buf, int buflen, struct dsc$descriptor_d *d)
{ lib$sget1_dd(&buflen, d);
d->dsc$b_dtype = DSC$K_DTYPE_T;
memcpy(d->dsc$a_pointer, buf, buflen);
}

Some code I had on the shelf. Not sure where I got it from.

Arne

Re: VMS databases

<1c0a124b-40e0-4ab3-8927-732481e660ban@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31594&group=comp.os.vms#31594

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:ac8:6ecc:0:b0:417:fa13:5bbb with SMTP id f12-20020ac86ecc000000b00417fa135bbbmr89564qtv.8.1700387222249; Sun, 19 Nov 2023 01:47:02 -0800 (PST)
X-Received: by 2002:a05:6a00:9381:b0:6c6:af58:ca06 with SMTP id ka1-20020a056a00938100b006c6af58ca06mr1444146pfb.1.1700387221813; Sun, 19 Nov 2023 01:47:01 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!69.80.99.14.MISMATCH!border-1.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sun, 19 Nov 2023 01:47:01 -0800 (PST)
In-Reply-To: <ujbie6$3gndc$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=70.30.63.110; posting-account=QqCTBgkAAACie99dBE6oFauYH8hE6sk0
NNTP-Posting-Host: 70.30.63.110
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me> <ujbie6$3gndc$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1c0a124b-40e0-4ab3-8927-732481e660ban@googlegroups.com>
Subject: Re: VMS databases
From: n.rieck@bell.net (Neil Rieck)
Injection-Date: Sun, 19 Nov 2023 09:47:02 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 199
 by: Neil Rieck - Sun, 19 Nov 2023 09:47 UTC

On Saturday, November 18, 2023 at 6:47:22 PM UTC-5, Arne Vajhøj wrote:
> On 11/18/2023 9:22 AM, Arne Vajhøj wrote:
> > On 11/17/2023 8:10 PM, Arne Vajhøj wrote:
> >> I just did another little article.
> >>
> >> https://www.vajhoej.dk/arne/articles/vmsdbx.html
> >>
> >> providing some examples for the databases available on VMS (Rdb, MySQL,
> >> SQLite, Mimer, Derby, H2, HSQLDB) in various programming languages
> >> (Cobol, C, Pascal, Java, Jython, Python, PHP).
> >>
> >> Nothing surprising and a lot of overlap with previous
> >> articles, but a different perspective.
> >
> > Niel Rieck replied (for some reason the post did not propagate
> > to eternal-september, so this is a manual copy from Google Groups):
> >
> > > Two additional points.
> > >
> > > 1) I've done a bit of hacking with SQLite (on both OpenVMS + Linux )
> > > and can inform that it should only be used in single user
> > > applications. When any process issues an "update table" command, all
> > > other processes are locked out.
> >
> > For multi user scenarios database servers are usually better than
> > embedded databases.
> >
> > I would have thougth SQLite could only have locked some part of
> > the database when doing an UPDATE, but ...
> >
> > > 2) Back in 2016 I received a copy of MariaDB-5.5 for OpenVMS Itanium
> > > from Mark Berryman. Since 90% of our VMS stuff is written in BASIC, I
> > > spent more than a few days trying to glue Mark's client code to my
> > > BASIC programs (we are in the process of moving our data from RMS to
> > > MariaDB). Linking the object files was fairly easy using Mark's
> > > instructions. Trying to pass string arrays from C to BASIC was a
> > > little more difficult. My eventual solution involved created string
> > > arrays in a BASIC declared COMMON then had C employ str$get1_dx() to
> > > copy the data back. I would be interested to learn if you had a better
> > > method.
> >
> > > https://neilrieck.net/demo_vms_html/mysql_api_demo14_c.html
> > > (crude c demo)
> > > https://neilrieck.net/demo_vms_html/mysql_demo14_bas.html
> > > (crude BASIC demo)
> >
> > VMS Basic is as it is and the libmysql API is what it is and
> > any solution is constrained by that.
> >
> > I do not have any magic solution for the problem. I would
> > probably have made the API differently (but differently does
> > not necessarily mean better).
> I could not resist trying.
>
> This is first attempt. But I think it is a relative clean API.
>
> $ type list.bas
> program main
>
> option type = explicit
>
> declare integer dbcon, stmt, outparam
> declare integer f1
> declare string f2
>
> %include "b.bas"
>
> dbcon = bmysql_open("localhost", 3306, "root", "", "test")
> stmt = bmysql_stmt_prepare(dbcon, "SELECT f1,f2 FROM t1")
> outparam = bmysql_outparam_init(2)
> call bmysql_outparam_integer(outparam, 0, f1)
> call bmysql_outparam_string(outparam, 1, f2)
> call bmysql_stmt_execute(stmt, 0, outparam)
> while bmysql_stmt_fetch(stmt, outparam) = 0
> print f1, "|" + f2 + "|"
> next
> call bmysql_outparam_free(outparam)
> call bmysql_stmt_free(stmt)
> call bmysql_close(dbcon)
>
> end program
> $ bas list
> $ link list + b/opt
> $ type list2.bas
> program main
>
> option type = explicit
>
> declare integer dbcon, stmt, inparam, outparam
> declare integer f1
> declare string f2
>
> %include "b.bas"
>
> dbcon = bmysql_open("localhost", 3306, "root", "", "test")
> stmt = bmysql_stmt_prepare(dbcon, "SELECT f1 FROM t1 WHERE f2 LIKE ?")
> f2 = "B%"
> inparam = bmysql_inparam_init(1)
> call bmysql_inparam_string(inparam, 0, f2)
> outparam = bmysql_outparam_init(1)
> call bmysql_outparam_integer(outparam, 0, f1)
> call bmysql_stmt_execute(stmt, inparam, outparam)
> while bmysql_stmt_fetch(stmt, outparam) = 0
> print f1
> next
> call bmysql_outparam_free(inparam)
> call bmysql_outparam_free(outparam)
> call bmysql_stmt_free(stmt)
> call bmysql_close(dbcon)
>
> end program
> $ bas list2
> $ link list2 + b/opt
> $ type add.bas
> program main
>
> option type = explicit
>
> declare integer dbcon, stmt, inparam
> declare integer f1
> declare string f2
>
> %include "b.bas"
>
> dbcon = bmysql_open("localhost", 3306, "root", "", "test")
> stmt = bmysql_stmt_prepare(dbcon, "INSERT INTO t1 VALUES(?,?)")
> f1 = 4
> f2 = "DDDD"
> inparam = bmysql_inparam_init(2)
> call bmysql_inparam_integer(inparam, 0, f1)
> call bmysql_inparam_string(inparam, 1, f2)
> call bmysql_stmt_execute(stmt, inparam, 0)
> call bmysql_inparam_free(inparam)
> call bmysql_stmt_free(stmt)
> call bmysql_close(dbcon)
>
> end program
> $ bas add
> $ link add + b/opt
> $ type del.bas
> program main
>
> option type = explicit
>
> declare integer dbcon, stmt, inparam
> declare integer f1
>
> %include "b.bas"
>
> dbcon = bmysql_open("localhost", 3306, "root", "", "test")
> stmt = bmysql_stmt_prepare(dbcon, "DELETE FROM t1 WHERE f1 = ?")
> f1 = 4
> inparam = bmysql_inparam_init(1)
> call bmysql_inparam_integer(inparam, 0, f1)
> call bmysql_stmt_execute(stmt, inparam, 0)
> call bmysql_inparam_free(inparam)
> call bmysql_stmt_free(stmt)
> call bmysql_close(dbcon)
>
> end program
> $ bas del
> $ link del + b/opt
> $ run list
> 1 |A|
> 2 |BB|
> 3 |CCC|
> $ run list2
> 2
> $ run add
> $ run list
> 1 |A|
> 2 |BB|
> 3 |CCC|
> 4 |DDDD|
> $ run list2
> 2
> $ run del
> $ run list
> 1 |A|
> 2 |BB|
> 3 |CCC|
> $ run list2
> 2
>
> Arne

Could you post the included code: "b.bas"

Neil

Re: VMS databases

<655a3cee$0$719$14726298@news.sunsite.dk>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31602&group=comp.os.vms#31602

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!dotsrc.org!filter.dotsrc.org!news.dotsrc.org!not-for-mail
Date: Sun, 19 Nov 2023 11:50:55 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: VMS databases
Newsgroups: comp.os.vms
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujbie6$3gndc$1@dont-email.me>
<1c0a124b-40e0-4ab3-8927-732481e660ban@googlegroups.com>
Content-Language: en-US
From: arne@vajhoej.dk (Arne Vajhøj)
In-Reply-To: <1c0a124b-40e0-4ab3-8927-732481e660ban@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 250
Message-ID: <655a3cee$0$719$14726298@news.sunsite.dk>
Organization: SunSITE.dk - Supporting Open source
NNTP-Posting-Host: a08b06ee.news.sunsite.dk
X-Trace: 1700412654 news.sunsite.dk 719 arne@vajhoej.dk/68.9.63.232:64457
X-Complaints-To: staff@sunsite.dk
 by: Arne Vajhøj - Sun, 19 Nov 2023 16:50 UTC

On 11/19/2023 4:47 AM, Neil Rieck wrote:
> On Saturday, November 18, 2023 at 6:47:22 PM UTC-5, Arne Vajhøj wrote:
>> On 11/18/2023 9:22 AM, Arne Vajhøj wrote:
>>> VMS Basic is as it is and the libmysql API is what it is and
>>> any solution is constrained by that.
>>>
>>> I do not have any magic solution for the problem. I would
>>> probably have made the API differently (but differently does
>>> not necessarily mean better).
>> I could not resist trying.
>>
>> This is first attempt. But I think it is a relative clean API.

> Could you post the included code: "b.bas"

B.BAS is not so interesting:

external integer function bmysql_open(string, integer, string, string,
string)
external integer function bmysql_stmt_prepare(integer, string)
external integer function bmysql_outparam_init(integer)
external integer function bmysql_inparam_init(integer)
external sub bmysql_outparam_integer(integer, integer, integer)
external sub bmysql_inparam_integer(integer, integer, integer)
external sub bmysql_outparam_string(integer, integer, string)
external sub bmysql_inparam_string(integer, integer, string)
external sub bmysql_stmt_execute(integer, integer, integer)
external integer function bmysql_stmt_fetch(integer, integer)
external sub bmysql_outparam_free(integer)
external sub bmysql_inparam_free(integer)
external sub bmysql_stmt_free(integer)
external sub bmysql_close(integer)

B2C.C has the interesting stuff:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <descrip.h>
#include <lib$routines.h>

#define SOCKET int
#include <mysql.h>

#define MAX_LEN 32000

struct b_param
{ int n;
struct dsc$descriptor_d **bstr;
MYSQL_BIND *bind;
};

static char *cstr(struct dsc$descriptor_d *s)
{ char *s2 = malloc(s->dsc$w_length + 1);
memcpy(s2, s->dsc$a_pointer, s->dsc$w_length);
s2[s->dsc$w_length] = 0;
return s2;
}

static void bstr(char *buf, int buflen, struct dsc$descriptor_d *d)
{ lib$sget1_dd(&buflen, d);
d->dsc$b_dtype = DSC$K_DTYPE_T;
memcpy(d->dsc$a_pointer, buf, buflen);
}

static MYSQL *realcon(int *con)
{ return (MYSQL *)(*con);
}

static MYSQL_STMT *realstmt(int *stmt)
{ return (MYSQL_STMT *)(*stmt);
}

static struct b_param *realparam(int *param)
{ return (struct b_param *)(*param);
}

int BMYSQL_OPEN(struct dsc$descriptor_d *host,
int *port,
struct dsc$descriptor_d *usr,
struct dsc$descriptor_d *pwd,
struct dsc$descriptor_d *db)
{ char *host2 = cstr(host);
char *usr2 = cstr(usr);
char *pwd2 = cstr(pwd);
char *db2 = cstr(db);
MYSQL *con = mysql_init(NULL);
con = mysql_real_connect(con, host2, usr2, pwd2, db2, *port, NULL, 0);
free(host2);
free(usr2);
free(pwd2);
free(db2);
return (int)con;
}

int BMYSQL_STMT_PREPARE(int *con, struct dsc$descriptor_d *sql)
{ char *sql2 = cstr(sql);
MYSQL_STMT *stmt = mysql_stmt_init(realcon(con));
int stat = mysql_stmt_prepare(stmt, sql2, strlen(sql2));
if(stat != 0) printf("mysql_stmt_prepare error : %s\n",
mysql_error(realcon(con)));
free(sql2);
return (int)stmt;
}

int BMYSQL_OUTPARAM_INIT(int *nparam)
{ struct b_param *p = malloc(sizeof(struct b_param));
p->n = *nparam;
p->bstr = malloc(*nparam * sizeof(struct dsc$descriptor_d));
p->bind = malloc(*nparam * sizeof(MYSQL_BIND));
return (int)p;
}

int BMYSQL_INPARAM_INIT(int *nparam)
{ struct b_param *p = malloc(sizeof(struct b_param));
p->n = *nparam;
p->bstr = NULL;
p->bind = malloc(*nparam * sizeof(MYSQL_BIND));
return (int)p;
}

void BMYSQL_OUTPARAM_INTEGER(int *param, int *ix, int *val)
{ struct b_param *p = realparam(param);
p->bstr[*ix] = NULL;
memset(&p->bind[*ix], 0, sizeof(MYSQL_BIND));
p->bind[*ix].buffer_type = MYSQL_TYPE_LONG;
p->bind[*ix].buffer = (char *)val;
p->bind[*ix].buffer_length = sizeof(int);
}

void BMYSQL_INPARAM_INTEGER(int *param, int *ix, int *val)
{ struct b_param *p = realparam(param);
memset(&p->bind[*ix], 0, sizeof(MYSQL_BIND));
p->bind[*ix].buffer_type = MYSQL_TYPE_LONG;
p->bind[*ix].buffer = (char *)val;
p->bind[*ix].buffer_length = sizeof(int);
}

void BMYSQL_OUTPARAM_STRING(int *param, int *ix, struct dsc$descriptor_d
*val)
{ struct b_param *p = realparam(param);
memset(&p->bind[*ix], 0, sizeof(MYSQL_BIND));
p->bstr[*ix] = val;
p->bind[*ix].buffer_type = MYSQL_TYPE_STRING;
p->bind[*ix].buffer = malloc(MAX_LEN);
p->bind[*ix].buffer_length = MAX_LEN;
p->bind[*ix].length = (unsigned long *)malloc(sizeof(unsigned long));
}

void BMYSQL_INPARAM_STRING(int *param, int *ix, struct dsc$descriptor_d
*val)
{ struct b_param *p = realparam(param);
memset(&p->bind[*ix], 0, sizeof(MYSQL_BIND));
p->bind[*ix].buffer_type = MYSQL_TYPE_STRING;
p->bind[*ix].buffer = val->dsc$a_pointer;
p->bind[*ix].buffer_length = val->dsc$w_length;
}

void BMYSQL_STMT_EXECUTE(int *stmt, int *inparam, int *outparam)
{ int stat;
struct b_param *pin = realparam(inparam);
struct b_param *pout = realparam(outparam);
if(*inparam != 0)
{
stat = mysql_stmt_bind_param(realstmt(stmt), pin->bind);
if(stat != 0) printf("mysql_stmt_bind_param error : %s\n",
mysql_stmt_error(realstmt(stmt)));
}
stat = mysql_stmt_execute(realstmt(stmt));
if(stat != 0) printf("mysql_stmt_execute error : %s\n",
mysql_stmt_error(realstmt(stmt)));
if(*outparam != 0)
{
stat = mysql_stmt_bind_result(realstmt(stmt), pout->bind);
if(stat != 0) printf("mysql_stmt_bind_result error : %s\n",
mysql_stmt_error(realstmt(stmt)));
}
stat = mysql_stmt_store_result(realstmt(stmt));
if(stat != 0) printf("mysql_stmt_store_result error : %s\n",
mysql_stmt_error(realstmt(stmt)));
}

int BMYSQL_STMT_FETCH(int *stmt, int *param)
{ struct b_param *p = realparam(param);
int stat = mysql_stmt_fetch(realstmt(stmt));
for(int i = 0; i < p->n; i++)
{
if(p->bind[i].buffer_type == MYSQL_TYPE_STRING)
{
char *buf = (char *)p->bind[i].buffer;
int buflen = (int)*(p->bind[i].length);
bstr(buf, buflen, p->bstr[i]);
}
}
return stat;
}

void BMYSQL_OUTPARAM_FREE(int *param)
{ struct b_param *p = realparam(param);
for(int i = 0; i < p->n; i++)
{
if(p->bind[i].buffer_type == MYSQL_TYPE_STRING)
{
free(p->bind[i].buffer);
free(p->bind[i].length);
}
}
free(p->bind);
free(p->bstr);
free(p);
}

void BMYSQL_INPARAM_FREE(int *param)
{ struct b_param *p = realparam(param);
free(p->bind);
free(p);
}

void BMYSQL_STMT_FREE(int *stmt)
{ mysql_stmt_free_result(realstmt(stmt));
}

void BMYSQL_CLOSE(int *con)
{ mysql_close(realcon(con));
}

Arne

Re: VMS databases

<ujdh49$3t4eg$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31604&group=comp.os.vms#31604

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: seaohveh@hoffmanlabs.invalid (Stephen Hoffman)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sun, 19 Nov 2023 12:37:13 -0500
Organization: HoffmanLabs LLC
Lines: 46
Message-ID: <ujdh49$3t4eg$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: dont-email.me; posting-host="f18c64c4db8fef3a1f1a4b037ef28d9a";
logging-data="4100560"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18HsgagE1VFfSc/pqsM8MF+5T8oAyf1imQ="
User-Agent: Unison/2.2
Cancel-Lock: sha1:k/x6KfVpw6kEXvJfBgFYbkob7Uo=
 by: Stephen Hoffman - Sun, 19 Nov 2023 17:37 UTC

On 2023-11-18 14:22:52 +0000, Arne Vajhøj said:

> On 11/17/2023 8:10 PM, Arne Vajhøj wrote:
>
> Niel Rieck replied (for some reason the post did not propagate to
> eternal-september, so this is a manual copy from Google Groups):

Probably caught in the Google Groups spam.

>> Two additional points.
>>
>> 1) I've done a bit of hacking with SQLite (on both OpenVMS + Linux )
>> and can inform that it should only be used in single user applications.
>> When any process issues an "update table" command, all other processes
>> are locked out.
>
> For multi user scenarios database servers are usually better than
> embedded databases.

As with many things in IT, that depends.

Expectations and related sizes can also differ. What can be considered
a small database for SQLite can potentially be considered a large
database for OpenVMS, for instance.

Expectations? SQLite tops out at 256 TiB databases, while OpenVMS file
storage tops out at 2 TiB files absent 'heroic' efforts.

> I would have thougth SQLite could only have locked some part of the
> database when doing an UPDATE, but ...

If you ask nicely, SQLite will defer the locking until the commit:

https://sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md

Otherwise, SQLite picks a simpler approach to database locking,
permitting one concurrent writer.

That section also includes suggestions around how to arbitrate update
access from within the application, when (if?) that becomes necessary.

--
Pure Personal Opinion | HoffmanLabs LLC

Re: VMS databases

<f83f4a3c-c52e-4c83-8f9c-370b624d7a30n@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31607&group=comp.os.vms#31607

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:a05:622a:4d90:b0:41e:55b2:4cbc with SMTP id ff16-20020a05622a4d9000b0041e55b24cbcmr154946qtb.12.1700419173658;
Sun, 19 Nov 2023 10:39:33 -0800 (PST)
X-Received: by 2002:a17:903:4289:b0:1ce:5bab:62d3 with SMTP id
ju9-20020a170903428900b001ce5bab62d3mr1480782plb.0.1700419173017; Sun, 19 Nov
2023 10:39:33 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sun, 19 Nov 2023 10:39:32 -0800 (PST)
In-Reply-To: <ujdh49$3t4eg$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=104.231.150.181; posting-account=CO-_tAoAAACjjs2KLAw3xVKCy6Z_J3VK
NNTP-Posting-Host: 104.231.150.181
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me> <ujdh49$3t4eg$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f83f4a3c-c52e-4c83-8f9c-370b624d7a30n@googlegroups.com>
Subject: Re: VMS databases
From: osuvman50@gmail.com (David Jones)
Injection-Date: Sun, 19 Nov 2023 18:39:33 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 1961
 by: David Jones - Sun, 19 Nov 2023 18:39 UTC

On Sunday, November 19, 2023 at 12:37:17 PM UTC-5, Stephen Hoffman wrote:
> If you ask nicely, SQLite will defer the locking until the commit:
>
> https://sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
>
> Otherwise, SQLite picks a simpler approach to database locking,
> permitting one concurrent writer.

"BEGIN CONCURRENT" is part of an experimental 'high concurrency' development
branch and is not in the mainline code published by SQLite.org. If you try it you just
get a syntax error.

Use of WAL mode (write-ahead logging) can alleviate some of the concurrent write
issues. It wants to use shared memory to coordinate between processes, however,
posing an issue for databases residing on shared disks in a cluster.

Re: VMS databases

<613af8c9-1759-49db-baf0-60bf1316f654n@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31610&group=comp.os.vms#31610

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:a05:622a:2a8b:b0:421:c2c5:4f12 with SMTP id kf11-20020a05622a2a8b00b00421c2c54f12mr126159qtb.6.1700421433774;
Sun, 19 Nov 2023 11:17:13 -0800 (PST)
X-Received: by 2002:a05:6a00:8c85:b0:6c6:b762:ada1 with SMTP id
ii5-20020a056a008c8500b006c6b762ada1mr1168177pfb.1.1700421433430; Sun, 19 Nov
2023 11:17:13 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!border-2.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sun, 19 Nov 2023 11:17:12 -0800 (PST)
In-Reply-To: <f83f4a3c-c52e-4c83-8f9c-370b624d7a30n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=70.30.63.110; posting-account=QqCTBgkAAACie99dBE6oFauYH8hE6sk0
NNTP-Posting-Host: 70.30.63.110
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujdh49$3t4eg$1@dont-email.me> <f83f4a3c-c52e-4c83-8f9c-370b624d7a30n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <613af8c9-1759-49db-baf0-60bf1316f654n@googlegroups.com>
Subject: Re: VMS databases
From: n.rieck@bell.net (Neil Rieck)
Injection-Date: Sun, 19 Nov 2023 19:17:13 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 38
 by: Neil Rieck - Sun, 19 Nov 2023 19:17 UTC

On Sunday, November 19, 2023 at 1:39:35 PM UTC-5, David Jones wrote:
> On Sunday, November 19, 2023 at 12:37:17 PM UTC-5, Stephen Hoffman wrote:
> > If you ask nicely, SQLite will defer the locking until the commit:
> >
> > https://sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
> >
> > Otherwise, SQLite picks a simpler approach to database locking,
> > permitting one concurrent writer.
> "BEGIN CONCURRENT" is part of an experimental 'high concurrency' development
> branch and is not in the mainline code published by SQLite.org. If you try it you just
> get a syntax error.
>
> Use of WAL mode (write-ahead logging) can alleviate some of the concurrent write
> issues. It wants to use shared memory to coordinate between processes, however,
> posing an issue for databases residing on shared disks in a cluster.

I have only done a small amount of SQLite programming on OpenVMS. In fact, I suppose you could say that it was only at the evaluation level because after I ran into some obvious problems, I switched over to MySQL / MariaDB then never looked back.

Now that is not to say that this is a garbage product. Most Linux people know that SQLite is employed by RPM/YUM/DNF to keep track of package dependencies.

As I understand it, SQLlite is also employed on most smart phones, and there are probably more of these in the world than laptops, desktops, towers and servers.

Neil Rieck
Waterloo, Ontario, Canada.
https://neilrieck.net

Re: VMS databases

<bfbecf57-4687-4f89-b1c2-a528f2f8670bn@googlegroups.com>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31612&group=comp.os.vms#31612

  copy link   Newsgroups: comp.os.vms
X-Received: by 2002:a05:622a:4ac3:b0:421:b48d:aef0 with SMTP id fx3-20020a05622a4ac300b00421b48daef0mr168625qtb.11.1700422020540;
Sun, 19 Nov 2023 11:27:00 -0800 (PST)
X-Received: by 2002:a63:155a:0:b0:5c1:58d8:757b with SMTP id
26-20020a63155a000000b005c158d8757bmr1125410pgv.3.1700422020242; Sun, 19 Nov
2023 11:27:00 -0800 (PST)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.vms
Date: Sun, 19 Nov 2023 11:26:59 -0800 (PST)
In-Reply-To: <655a3cee$0$719$14726298@news.sunsite.dk>
Injection-Info: google-groups.googlegroups.com; posting-host=70.30.63.110; posting-account=QqCTBgkAAACie99dBE6oFauYH8hE6sk0
NNTP-Posting-Host: 70.30.63.110
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujbie6$3gndc$1@dont-email.me> <1c0a124b-40e0-4ab3-8927-732481e660ban@googlegroups.com>
<655a3cee$0$719$14726298@news.sunsite.dk>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <bfbecf57-4687-4f89-b1c2-a528f2f8670bn@googlegroups.com>
Subject: Re: VMS databases
From: n.rieck@bell.net (Neil Rieck)
Injection-Date: Sun, 19 Nov 2023 19:27:00 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 9227
 by: Neil Rieck - Sun, 19 Nov 2023 19:26 UTC

On Sunday, November 19, 2023 at 11:50:58 AM UTC-5, Arne Vajhøj wrote:
> On 11/19/2023 4:47 AM, Neil Rieck wrote:
> > On Saturday, November 18, 2023 at 6:47:22 PM UTC-5, Arne Vajhøj wrote:
> >> On 11/18/2023 9:22 AM, Arne Vajhøj wrote:
> >>> VMS Basic is as it is and the libmysql API is what it is and
> >>> any solution is constrained by that.
> >>>
> >>> I do not have any magic solution for the problem. I would
> >>> probably have made the API differently (but differently does
> >>> not necessarily mean better).
> >> I could not resist trying.
> >>
> >> This is first attempt. But I think it is a relative clean API.
> > Could you post the included code: "b.bas"
> B.BAS is not so interesting:
>
> external integer function bmysql_open(string, integer, string, string,
> string)
> external integer function bmysql_stmt_prepare(integer, string)
> external integer function bmysql_outparam_init(integer)
> external integer function bmysql_inparam_init(integer)
> external sub bmysql_outparam_integer(integer, integer, integer)
> external sub bmysql_inparam_integer(integer, integer, integer)
> external sub bmysql_outparam_string(integer, integer, string)
> external sub bmysql_inparam_string(integer, integer, string)
> external sub bmysql_stmt_execute(integer, integer, integer)
> external integer function bmysql_stmt_fetch(integer, integer)
> external sub bmysql_outparam_free(integer)
> external sub bmysql_inparam_free(integer)
> external sub bmysql_stmt_free(integer)
> external sub bmysql_close(integer)
>
> B2C.C has the interesting stuff:
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
>
> #include <descrip.h>
> #include <lib$routines.h>
>
> #define SOCKET int
> #include <mysql.h>
>
> #define MAX_LEN 32000
>
> struct b_param
> {
> int n;
> struct dsc$descriptor_d **bstr;
> MYSQL_BIND *bind;
> };
>
> static char *cstr(struct dsc$descriptor_d *s)
> {
> char *s2 = malloc(s->dsc$w_length + 1);
> memcpy(s2, s->dsc$a_pointer, s->dsc$w_length);
> s2[s->dsc$w_length] = 0;
> return s2;
> }
>
> static void bstr(char *buf, int buflen, struct dsc$descriptor_d *d)
> {
> lib$sget1_dd(&buflen, d);
> d->dsc$b_dtype = DSC$K_DTYPE_T;
> memcpy(d->dsc$a_pointer, buf, buflen);
> }
> static MYSQL *realcon(int *con)
> {
> return (MYSQL *)(*con);
> }
>
> static MYSQL_STMT *realstmt(int *stmt)
> {
> return (MYSQL_STMT *)(*stmt);
> }
>
> static struct b_param *realparam(int *param)
> {
> return (struct b_param *)(*param);
> }
>
> int BMYSQL_OPEN(struct dsc$descriptor_d *host,
> int *port,
> struct dsc$descriptor_d *usr,
> struct dsc$descriptor_d *pwd,
> struct dsc$descriptor_d *db)
> {
> char *host2 = cstr(host);
> char *usr2 = cstr(usr);
> char *pwd2 = cstr(pwd);
> char *db2 = cstr(db);
> MYSQL *con = mysql_init(NULL);
> con = mysql_real_connect(con, host2, usr2, pwd2, db2, *port, NULL, 0);
> free(host2);
> free(usr2);
> free(pwd2);
> free(db2);
> return (int)con;
> }
>
> int BMYSQL_STMT_PREPARE(int *con, struct dsc$descriptor_d *sql)
> {
> char *sql2 = cstr(sql);
> MYSQL_STMT *stmt = mysql_stmt_init(realcon(con));
> int stat = mysql_stmt_prepare(stmt, sql2, strlen(sql2));
> if(stat != 0) printf("mysql_stmt_prepare error : %s\n",
> mysql_error(realcon(con)));
> free(sql2);
> return (int)stmt;
> }
>
> int BMYSQL_OUTPARAM_INIT(int *nparam)
> {
> struct b_param *p = malloc(sizeof(struct b_param));
> p->n = *nparam;
> p->bstr = malloc(*nparam * sizeof(struct dsc$descriptor_d));
> p->bind = malloc(*nparam * sizeof(MYSQL_BIND));
> return (int)p;
> }
>
> int BMYSQL_INPARAM_INIT(int *nparam)
> {
> struct b_param *p = malloc(sizeof(struct b_param));
> p->n = *nparam;
> p->bstr = NULL;
> p->bind = malloc(*nparam * sizeof(MYSQL_BIND));
> return (int)p;
> }
>
> void BMYSQL_OUTPARAM_INTEGER(int *param, int *ix, int *val)
> {
> struct b_param *p = realparam(param);
> p->bstr[*ix] = NULL;
> memset(&p->bind[*ix], 0, sizeof(MYSQL_BIND));
> p->bind[*ix].buffer_type = MYSQL_TYPE_LONG;
> p->bind[*ix].buffer = (char *)val;
> p->bind[*ix].buffer_length = sizeof(int);
> }
>
> void BMYSQL_INPARAM_INTEGER(int *param, int *ix, int *val)
> {
> struct b_param *p = realparam(param);
> memset(&p->bind[*ix], 0, sizeof(MYSQL_BIND));
> p->bind[*ix].buffer_type = MYSQL_TYPE_LONG;
> p->bind[*ix].buffer = (char *)val;
> p->bind[*ix].buffer_length = sizeof(int);
> }
>
> void BMYSQL_OUTPARAM_STRING(int *param, int *ix, struct dsc$descriptor_d
> *val)
> {
> struct b_param *p = realparam(param);
> memset(&p->bind[*ix], 0, sizeof(MYSQL_BIND));
> p->bstr[*ix] = val;
> p->bind[*ix].buffer_type = MYSQL_TYPE_STRING;
> p->bind[*ix].buffer = malloc(MAX_LEN);
> p->bind[*ix].buffer_length = MAX_LEN;
> p->bind[*ix].length = (unsigned long *)malloc(sizeof(unsigned long));
> }
>
> void BMYSQL_INPARAM_STRING(int *param, int *ix, struct dsc$descriptor_d
> *val)
> {
> struct b_param *p = realparam(param);
> memset(&p->bind[*ix], 0, sizeof(MYSQL_BIND));
> p->bind[*ix].buffer_type = MYSQL_TYPE_STRING;
> p->bind[*ix].buffer = val->dsc$a_pointer;
> p->bind[*ix].buffer_length = val->dsc$w_length;
> }
>
> void BMYSQL_STMT_EXECUTE(int *stmt, int *inparam, int *outparam)
> {
> int stat;
> struct b_param *pin = realparam(inparam);
> struct b_param *pout = realparam(outparam);
> if(*inparam != 0)
> {
> stat = mysql_stmt_bind_param(realstmt(stmt), pin->bind);
> if(stat != 0) printf("mysql_stmt_bind_param error : %s\n",
> mysql_stmt_error(realstmt(stmt)));
> }
> stat = mysql_stmt_execute(realstmt(stmt));
> if(stat != 0) printf("mysql_stmt_execute error : %s\n",
> mysql_stmt_error(realstmt(stmt)));
> if(*outparam != 0)
> {
> stat = mysql_stmt_bind_result(realstmt(stmt), pout->bind);
> if(stat != 0) printf("mysql_stmt_bind_result error : %s\n",
> mysql_stmt_error(realstmt(stmt)));
> }
> stat = mysql_stmt_store_result(realstmt(stmt));
> if(stat != 0) printf("mysql_stmt_store_result error : %s\n",
> mysql_stmt_error(realstmt(stmt)));
> }
>
> int BMYSQL_STMT_FETCH(int *stmt, int *param)
> {
> struct b_param *p = realparam(param);
> int stat = mysql_stmt_fetch(realstmt(stmt));
> for(int i = 0; i < p->n; i++)
> {
> if(p->bind[i].buffer_type == MYSQL_TYPE_STRING)
> {
> char *buf = (char *)p->bind[i].buffer;
> int buflen = (int)*(p->bind[i].length);
> bstr(buf, buflen, p->bstr[i]);
> }
> }
> return stat;
> }
>
> void BMYSQL_OUTPARAM_FREE(int *param)
> {
> struct b_param *p = realparam(param);
> for(int i = 0; i < p->n; i++)
> {
> if(p->bind[i].buffer_type == MYSQL_TYPE_STRING)
> {
> free(p->bind[i].buffer);
> free(p->bind[i].length);
> }
> }
> free(p->bind);
> free(p->bstr);
> free(p);
> }
>
> void BMYSQL_INPARAM_FREE(int *param)
> {
> struct b_param *p = realparam(param);
> free(p->bind);
> free(p);
> }
>
> void BMYSQL_STMT_FREE(int *stmt)
> {
> mysql_stmt_free_result(realstmt(stmt));
> }
>
> void BMYSQL_CLOSE(int *con)
> {
> mysql_close(realcon(con));
> }
>
> Arne

Thanks

Neil

Re: VMS databases

<655a7753$0$718$14726298@news.sunsite.dk>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31616&group=comp.os.vms#31616

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!dotsrc.org!filter.dotsrc.org!news.dotsrc.org!not-for-mail
Date: Sun, 19 Nov 2023 16:00:04 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: VMS databases
Content-Language: en-US
Newsgroups: comp.os.vms
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujdh49$3t4eg$1@dont-email.me>
<f83f4a3c-c52e-4c83-8f9c-370b624d7a30n@googlegroups.com>
<613af8c9-1759-49db-baf0-60bf1316f654n@googlegroups.com>
From: arne@vajhoej.dk (Arne Vajhøj)
In-Reply-To: <613af8c9-1759-49db-baf0-60bf1316f654n@googlegroups.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 44
Message-ID: <655a7753$0$718$14726298@news.sunsite.dk>
Organization: SunSITE.dk - Supporting Open source
NNTP-Posting-Host: e74f7638.news.sunsite.dk
X-Trace: 1700427603 news.sunsite.dk 718 arne@vajhoej.dk/68.9.63.232:50687
X-Complaints-To: staff@sunsite.dk
 by: Arne Vajhøj - Sun, 19 Nov 2023 21:00 UTC

On 11/19/2023 2:17 PM, Neil Rieck wrote:
> On Sunday, November 19, 2023 at 1:39:35 PM UTC-5, David Jones wrote:
>> On Sunday, November 19, 2023 at 12:37:17 PM UTC-5, Stephen Hoffman wrote:
>>> If you ask nicely, SQLite will defer the locking until the commit:
>>>
>>> https://sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
>>>
>>> Otherwise, SQLite picks a simpler approach to database locking,
>>> permitting one concurrent writer.
>> "BEGIN CONCURRENT" is part of an experimental 'high concurrency' development
>> branch and is not in the mainline code published by SQLite.org. If you try it you just
>> get a syntax error.
>>
>> Use of WAL mode (write-ahead logging) can alleviate some of the concurrent write
>> issues. It wants to use shared memory to coordinate between processes, however,
>> posing an issue for databases residing on shared disks in a cluster.
>
> I have only done a small amount of SQLite programming on OpenVMS. In
> fact, I suppose you could say that it was only at the evaluation
> level because after I ran into some obvious problems, I switched over
> to MySQL / MariaDB then never looked back.
>
> Now that is not to say that this is a garbage product. Most Linux
> people know that SQLite is employed by RPM/YUM/DNF to keep track of
> package dependencies.
>
> As I understand it, SQLlite is also employed on most smart phones,
> and there are probably more of these in the world than laptops,
> desktops, towers and servers.
It is used by Android, iOS, macOS, some Linux and Unix, FireFox,
ThunderBird, various Adobe products, Skype, various car navigation
systems etc..

I think that most people use something that use SQLite.

SQLite is a fine product.

But as always one need to pick the right tool for the job.

SQLite and MySQL are not solutions for the same problem.

Arne

Re: VMS databases

<ujdt79$3v180$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31617&group=comp.os.vms#31617

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: arne@vajhoej.dk (Arne Vajhøj)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sun, 19 Nov 2023 16:03:37 -0500
Organization: A noiseless patient Spider
Lines: 64
Message-ID: <ujdt79$3v180$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujdh49$3t4eg$1@dont-email.me>
<f83f4a3c-c52e-4c83-8f9c-370b624d7a30n@googlegroups.com>
<613af8c9-1759-49db-baf0-60bf1316f654n@googlegroups.com>
<655a7753$0$718$14726298@news.sunsite.dk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 19 Nov 2023 21:03:37 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="686a48515a4797b1a6e763fd0579756f";
logging-data="4162816"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/RSYoUvUQjYrhV2j0NIqYP+y0mdqGmMBg="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:D/J25tIBpqsWBV79Fh6nBwGvIC8=
In-Reply-To: <655a7753$0$718$14726298@news.sunsite.dk>
Content-Language: en-US
 by: Arne Vajhøj - Sun, 19 Nov 2023 21:03 UTC

On 11/19/2023 4:00 PM, Arne Vajhøj wrote:
> On 11/19/2023 2:17 PM, Neil Rieck wrote:
>> On Sunday, November 19, 2023 at 1:39:35 PM UTC-5, David Jones wrote:
>>> On Sunday, November 19, 2023 at 12:37:17 PM UTC-5, Stephen Hoffman
>>> wrote:
>>>> If you ask nicely, SQLite will defer the locking until the commit:
>>>>
>>>> https://sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
>>>>
>>>> Otherwise, SQLite picks a simpler approach to database locking,
>>>> permitting one concurrent writer.
>>> "BEGIN CONCURRENT" is part of an experimental 'high concurrency'
>>> development
>>> branch and is not in the mainline code published by SQLite.org. If
>>> you try it you just
>>> get a syntax error.
>>>
>>> Use of WAL mode (write-ahead logging) can alleviate some of the
>>> concurrent write
>>> issues. It wants to use shared memory to coordinate between
>>> processes, however,
>>> posing an issue for databases residing on shared disks in a cluster.
>>
>> I have only done a small amount of SQLite programming on OpenVMS. In
>> fact, I suppose you could say that it was only at the evaluation
>> level because after I ran into some obvious problems, I switched over
>> to MySQL / MariaDB then never looked back.
>>
>> Now that is not to say that this is a garbage product. Most Linux
>> people know that SQLite is employed by  RPM/YUM/DNF to keep track of
>> package dependencies.
>>
>> As I understand it, SQLlite is also employed on most smart phones,
>> and there are probably more of these in the world than laptops,
>> desktops, towers and servers.
> It is used by Android, iOS, macOS, some Linux and Unix, FireFox,
> ThunderBird, various Adobe products, Skype, various car navigation
> systems etc..
>
> I think that most people use something that use SQLite.
>
> SQLite is a fine product.
>
> But as always one need to pick the right tool for the job.
>
> SQLite and MySQL are not solutions for the same problem.

I just did a check on my PC for what applications use SQLite.

A lot.

3 interesting ones:
* Oracle DB GDAL
* MySQL WorkBench
* PostgreSQL pgAdmin

:-)

Even if it is all about a database server then a small embedded database
can be the right tool for some task.

Arne

Re: VMS databases

<uje1re$3vg63$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31619&group=comp.os.vms#31619

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: jan-erik.soderholm@telia.com (Jan-Erik Söderholm)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sun, 19 Nov 2023 23:22:37 +0100
Organization: A noiseless patient Spider
Lines: 50
Message-ID: <uje1re$3vg63$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujdh49$3t4eg$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 19 Nov 2023 22:22:38 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="d4a5011f7a9e7fbc00dd17aad952606a";
logging-data="4178115"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+9Irgcu1Hc3jo3P6FnYEWJ"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:PmDBmPnC30TttNvO4hwl6yWbozQ=
In-Reply-To: <ujdh49$3t4eg$1@dont-email.me>
Content-Language: sv
 by: Jan-Erik Söderholm - Sun, 19 Nov 2023 22:22 UTC

Den 2023-11-19 kl. 18:37, skrev Stephen Hoffman:
> On 2023-11-18 14:22:52 +0000, Arne Vajhøj said:
>
>> On 11/17/2023 8:10 PM, Arne Vajhøj wrote:
>>
>> Niel Rieck replied (for some reason the post did not propagate to
>> eternal-september, so this is a manual copy from Google Groups):
>
> Probably caught in the Google Groups spam.
>
>>>  Two additional points.
>>>
>>>  1) I've done a bit of hacking with SQLite (on both OpenVMS + Linux )
>>> and can inform that it should only be used in single user applications.
>>> When any process issues an "update table" command, all other processes
>>> are locked out.
>>
>> For multi user scenarios database servers are usually better than
>> embedded databases.
>
> As with many things in IT, that depends.
>
> Expectations and related sizes can also differ. What can be considered a
> small database for SQLite can potentially be considered a large database
> for OpenVMS, for instance.
>
> Expectations? SQLite tops out at 256 TiB databases, while OpenVMS file
> storage tops out at 2 TiB files absent 'heroic' efforts.

A single Rdb database can have 8192 storage areas (individual files)
so the max database size would be something like 16.000 TiB.

>
>> I would have thougth SQLite could only have locked some part of the
>> database when doing an UPDATE, but ...
>
> If you ask nicely, SQLite will defer the locking until the commit:
>
> https://sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md
>
> Otherwise, SQLite picks a simpler approach to database locking, permitting
> one concurrent writer.
>
> That section also includes suggestions around how to arbitrate update
> access from within the application, when (if?) that becomes necessary.
>
>
>

Re: VMS databases

<80ddd39846a51377adee176adbf56c391fd910e9.camel@munted.eu>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31621&group=comp.os.vms#31621

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: alex.buell@munted.eu (Single Stage to Orbit)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sun, 19 Nov 2023 22:32:18 +0000
Organization: One very high maintenance cat
Lines: 22
Message-ID: <80ddd39846a51377adee176adbf56c391fd910e9.camel@munted.eu>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujdh49$3t4eg$1@dont-email.me>
<f83f4a3c-c52e-4c83-8f9c-370b624d7a30n@googlegroups.com>
<613af8c9-1759-49db-baf0-60bf1316f654n@googlegroups.com>
<655a7753$0$718$14726298@news.sunsite.dk> <ujdt79$3v180$1@dont-email.me>
Reply-To: alex.buell@munted.eu
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Injection-Info: dont-email.me; posting-host="7d543967e12fe799ff4bd3eb6fc10b77";
logging-data="7151"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18hNRF4W9gX2eyAfdc38NzznawvPVishyA="
User-Agent: Evolution 3.48.4
Cancel-Lock: sha1:BLjJK8BlomnaGYQCqe6/p0ttmdc=
In-Reply-To: <ujdt79$3v180$1@dont-email.me>
 by: Single Stage to Orbi - Sun, 19 Nov 2023 22:32 UTC

On Sun, 2023-11-19 at 16:03 -0500, Arne Vajhøj wrote:
> > SQLite and MySQL are not solutions for the same problem.
>
> I just did a check on my PC for what applications use SQLite.
>
> A lot.
>
> 3 interesting ones:
> * Oracle DB GDAL
> * MySQL WorkBench
> * PostgreSQL pgAdmin
>
> :-)
>
> Even if it is all about a database server then a small embedded
> database
> can be the right tool for some task.

Android is riddled with apps that make use of SQLite3.
--
Tactical Nuclear Kittens

Re: VMS databases

<ujebpi$192m$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31625&group=comp.os.vms#31625

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!paganini.bofh.team!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: arne@vajhoej.dk (Arne Vajhøj)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Sun, 19 Nov 2023 20:12:17 -0500
Organization: A noiseless patient Spider
Lines: 29
Message-ID: <ujebpi$192m$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me>
<ujbie6$3gndc$1@dont-email.me>
<1c0a124b-40e0-4ab3-8927-732481e660ban@googlegroups.com>
<655a3cee$0$719$14726298@news.sunsite.dk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 20 Nov 2023 01:12:18 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="8a3c2d9f2f352665290f914d1b3ae02b";
logging-data="42070"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19GdD3+wGCVp3+kR7lhUdf+Wczct7fo+BU="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:t92NpNhwwJc333ww4AIueg0JG90=
Content-Language: en-US
In-Reply-To: <655a3cee$0$719$14726298@news.sunsite.dk>
 by: Arne Vajhøj - Mon, 20 Nov 2023 01:12 UTC

On 11/19/2023 11:50 AM, Arne Vajhøj wrote:
> On 11/19/2023 4:47 AM, Neil Rieck wrote:
>> On Saturday, November 18, 2023 at 6:47:22 PM UTC-5, Arne Vajhøj wrote:
>>> On 11/18/2023 9:22 AM, Arne Vajhøj wrote:
>>>> VMS Basic is as it is and the libmysql API is what it is and
>>>> any solution is constrained by that.
>>>>
>>>> I do not have any magic solution for the problem. I would
>>>> probably have made the API differently (but differently does
>>>> not necessarily mean better).
>>> I could not resist trying.
>>>
>>> This is first attempt. But I think it is a relative clean API.
>
>> Could you post the included code: "b.bas"
>
> B.BAS is not so interesting:

> B2C.C has the interesting stuff:

I just made bunch of changes (support more data types,
support CLASS S strings, some error handling in the form
of negative return values and a sub to get error message).

https://www.vajhoej.dk/arne/opensource/vms/vmsbmysql-src-v0_1.zip

Arne

Re: VMS databases

<ujg2o7$csb5$1@dont-email.me>

  copy mid

https://news.novabbs.org/computers/article-flat.php?id=31644&group=comp.os.vms#31644

  copy link   Newsgroups: comp.os.vms
Path: i2pn2.org!i2pn.org!news.chmurka.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: seaohveh@hoffmanlabs.invalid (Stephen Hoffman)
Newsgroups: comp.os.vms
Subject: Re: VMS databases
Date: Mon, 20 Nov 2023 11:50:15 -0500
Organization: HoffmanLabs LLC
Lines: 22
Message-ID: <ujg2o7$csb5$1@dont-email.me>
References: <uj92tt$312hn$4@dont-email.me> <ujahbq$3b8f1$1@dont-email.me> <ujdh49$3t4eg$1@dont-email.me> <uje1re$3vg63$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: dont-email.me; posting-host="1b8c53527c126a4f53dda9f64cae6882";
logging-data="422245"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18DJAyObZAPP5WyNdoqWeEc1WSdfkvNg3M="
User-Agent: Unison/2.2
Cancel-Lock: sha1:9gQoj7jmp3m8tnvB7NYCtUVTGmw=
 by: Stephen Hoffman - Mon, 20 Nov 2023 16:50 UTC

On 2023-11-19 22:22:37 +0000, Jan-Erik Söderholm said:

> Den 2023-11-19 kl. 18:37, skrev Stephen Hoffman:
>> As with many things in IT, that depends.
>>
>> Expectations and related sizes can also differ. What can be considered
>> a small database for SQLite can potentially be considered a large
>> database for OpenVMS, for instance.
>>
>> Expectations? SQLite tops out at 256 TiB databases, while OpenVMS file
>> storage tops out at 2 TiB files absent 'heroic' efforts.
>
> A single Rdb database can have 8192 storage areas (individual files) so
> the max database size would be something like 16.000 TiB.

So... Heroic _and_ expensive.

--
Pure Personal Opinion | HoffmanLabs LLC

Pages:12
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor