Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss
Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Is my Ingres server running on Windows?

40 views
Skip to first unread message

Roy Hann

unread,
Sep 4, 2023, 9:48:09 AM9/4/23
to
Short of querying ima_version, or parsing the _version() string, or
similar antics, is there a convenient way to tell if my application is
connected to Ingres running on Windows?

Clearly I am hoping for something like dbmsinfo('platform')...

Roy

chris.cla...@gmail.com

unread,
Sep 4, 2023, 11:03:16 PM9/4/23
to
I can't think of anything off the top of my head. If it were me, I'd use dbmsinfo('_version'). If you want to avoid that then you could look at port numbers in IMA for (say) the GCN. Windows uses pipes, most installations on Unix are tcp/ip sockets (rather than domain/file sockets), so if you can't successfully cast to an integer its **probably** Windows (or VMS).

The other option might be to poke around locations paths, but again for me version string would be my goto solution.

Out of curiosity, what sort of decisions to you want to make once you have this determined in the application?


Chris

Roy Hann

unread,
Sep 5, 2023, 4:54:50 AM9/5/23
to
chris.cla...@gmail.com wrote:

> On Monday, September 4, 2023 at 6:48:09 AM UTC-7, Roy Hann wrote:
>> Short of querying ima_version, or parsing the _version() string, or
>> similar antics, is there a convenient way to tell if my application is
>> connected to Ingres running on Windows?
>>
>> Clearly I am hoping for something like dbmsinfo('platform')...

> [snip]
>
> Out of curiosity, what sort of decisions to you want to make once you
> have this determined in the application?

I want to know what kind of UUID I'm getting back from

SELECT uuid()

On a 'nix I'll get a Type-1 UUID; on Windows I'll get a Type-4 and the
human-readable representation will be scrambled (seemingly because it's
ignoring endian-ness): e.g. 4dbbb0f1-e68d-834a-8e47-359b73beb840.
According to me that -834a- bit should be -4a83-.

If I know the UUID is coming from Windows I can select hex(uuid()) and
format it correctly myself.

The formatting is my issue; I don't care that the two versions return
different types of UUID--though I can't imagine it's desirable.

Roy


Sarkaut Mohn

unread,
Sep 6, 2023, 7:48:43 AM9/6/23
to
If you wanted to get v1 UUID on Windows, you can use II_UUID_MAC set to TRUE.
On Windows, Ingres runs the OS function UuidCreate which generates v4 UUIDs. With II_UUID_MAC=TRUE, Ingres uses OS function UuidCreateSequential which generates v1 UUIDs. On Linux, Ingres uses an own customized code and generates v1 UUIDs.

Roy Hann

unread,
Sep 6, 2023, 8:45:49 AM9/6/23
to
Sarkaut Mohn wrote:

> Roy Hann schrieb am Dienstag, 5. September 2023 um 10:54:50 UTC+2:
>> chris.cla...@gmail.com wrote:
>>
>> > On Monday, September 4, 2023 at 6:48:09 AM UTC-7, Roy Hann wrote:
>> >> Short of querying ima_version, or parsing the _version() string, or
>> >> similar antics, is there a convenient way to tell if my application is
>> >> connected to Ingres running on Windows?
>> >>
>> >> Clearly I am hoping for something like dbmsinfo('platform')...
>> > [snip]
>> >
>> > Out of curiosity, what sort of decisions to you want to make once you
>> > have this determined in the application?
>> I want to know what kind of UUID I'm getting back from
>>
>> SELECT uuid()
>>
>> On a 'nix I'll get a Type-1 UUID; on Windows I'll get a Type-4 and the
>> human-readable representation will be scrambled (seemingly because it's
>> ignoring endian-ness): e.g. 4dbbb0f1-e68d-834a-8e47-359b73beb840.
>> According to me that -834a- bit should be -4a83-.
>>
>> If I know the UUID is coming from Windows I can select hex(uuid()) and
>> format it correctly myself.
>>
>> The formatting is my issue; I don't care that the two versions return
>> different types of UUID--though I can't imagine it's desirable.
>
> If you wanted to get v1 UUID on Windows, you can use II_UUID_MAC set to TRUE.
> On Windows, Ingres runs the OS function UuidCreate which generates v4 UUIDs.
> With II_UUID_MAC=TRUE, Ingres uses OS function UuidCreateSequential
> which generates v1 UUIDs. On Linux, Ingres uses an own customized code
> and generates v1 UUIDs.

Ah-hah! I did not know about that. Thank you.

There is still the problem that on Windows the human-readble
representation is garbled though.

As for my original question: I've resigned myself to looking for "win"
in the _version() string. It's not very horrible.

Roy

0 new messages