Re: How to create an ODBC datasource in CI

From: Adrian Grucza <adrian(dot)grucza(at)iress(dot)com>
To: Dave Cramer <davecramer(at)gmail(dot)com>
Cc: Jon Raiford <raiford(at)labware(dot)com>, PostgreSQL mailing lists <pgsql-odbc(at)postgresql(dot)org>
Subject: Re: How to create an ODBC datasource in CI
Date: 2024-03-30 11:45:04
Message-ID: CADF4wWrUbUMqKVTQbEQ9eKftjB68igwUWG+nKj_LQs5-vkYZFQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

You might consider adding an optional "DsnProperties" string parameter to
regress.ps1. When provided, the script could use that property string to
create the DSN instead of calling input-dsninfo to prompt for the
properties. In general I think it's preferable for CI to run tests using
the same script that people use when developing psqlODBC locally. That way
if the script ever breaks, then the break will be detected in CI. But I
think it's also useful to test the MSI installer, which regress.ps1 doesn't
do.

Adrian Grucza
Technical Lead
Office: +61390185800
The contents of this email originated from Iress. For this purpose Iress includes Iress Limited and/or any of its subsidiaries, holding companies and trading entities.
​​If you have received this email in error please notify the sender immediately and delete this email.
On Sat, 30 Mar 2024 at 22:09, Dave Cramer <davecramer(at)gmail(dot)com> wrote:

>
>
> *CAUTION: *This Email is from an EXTERNAL source. Ensure you trust this
> sender before clicking on any links or attachments.
>
>
>
>
>
> On Sat, 30 Mar 2024 at 06:17, Adrian Grucza <adrian(dot)grucza(at)iress(dot)com>
> wrote:
>
>> If your aim is to run the regression tests then winbuild/regress.ps1 does
>> everything for you: installs a dev version of the driver, creates a DSN for
>> it and runs the tests against a PostgreSQL server (which you could run in
>> Docker).
>>
> Well the problem is that it waits for input which we can't do on github
> actions
>
>>
>> But if you want to use the MSI installer, running that will install the
>> driver for you:
>>
>> Start-Process 'C:\\psqlodbc_x64.msi' '/quiet /passive' -PassThru |
>> Wait-Process;
>>
>> You then just need to create the DSN:
>>
>> Add-OdbcDsn -Name "MyPostgresDsn" -DsnType 'User' -Platform '64-bit'
>> -DriverName 'PostgreSQL Unicode(x64)'
>>
>> Set-OdbcDsn -Name "MyPostgresDsn" `
>> -DsnType "User" `
>> -SetPropertyValue @("Servername=${env:DB_HOST}" `
>> ,'Port=5432' `
>> ,"SSLMode=${env:SSL_MODE}" `
>> ,'BoolsAsChar=0' `
>> ,'FetchRefcursors=1' `
>> ,'MaxVarcharSize=4094' `
>> )
>>
>> Thanks,
>
> Will try this
>
> Dave
>
>>
>> Adrian Grucza
>> Technical Lead
>> Office: +61390185800
>> The contents of this email originated from Iress. For this purpose Iress
>> includes Iress Limited and/or any of its subsidiaries, holding companies
>> and trading entities.
>> If you have received this email in error please notify the sender
>> immediately and delete this email.
>> On Sat, 30 Mar 2024 at 6:53 pm, Dave Cramer <davecramer(at)gmail(dot)com> wrote:
>>
>>>
>>>
>>> *CAUTION: *This Email is from an EXTERNAL source. Ensure you trust this
>>> sender before clicking on any links or attachments.
>>>
>>>
>>>
>>>
>>> On Fri, 29 Mar 2024 at 18:49, Adrian Grucza <adrian(dot)grucza(at)iress(dot)com>
>>> wrote:
>>>
>>>> winbuild/regress.ps1 uses RegisterRegdsn.exe (built from
>>>> test/RegisterRegdsn.c) to install the driver and register a data source.
>>>> You could use that, or you may find it easier to use the Wdac cmdlets
>>>> <https://urldefense.com/v3/__https://learn.microsoft.com/en-us/powershell/module/wdac/?view=windowsserver2022-ps__;!!OSkwEA!gCqZhyHagy3EZmgiOmuwocdpV-3R-QcgE_7CIaErQdc74VCne94pcDCufFPcWI0H77tfxQMSrAT1qmFl__3d$> in
>>>> PowerShell, specifically Add-OdbcDsn and Set-OdbcDsn.
>>>>
>>>>
>>> Yes, I saw those, was going to try them. I think the challenge is
>>> registering the driver first though.
>>>
>>> Dave
>>>
>>>>
>>>> [image: iress.com] <https://www.iress.com/>
>>>> Adrian Grucza
>>>> Technical Lead
>>>> Office: +61390185800
>>>> adrian(dot)grucza(at)iress(dot)com
>>>> www.iress.com
>>>> Level 16 385 Bourke St
>>>> <https://urldefense.com/v3/__https://www.google.com/maps/search/385**ABourke**ASt**BMelbourne?entry=gmail&source=g__;wqDCoCvCoA!!OSkwEA!ixmz3KnCk7FeCEOER7k0VgQOdst-3hQ6tig2QotRG6tNQcHE8SCkKucYb2jeSPoJmsDSAHQ6AWUj-A7Sx2OU$>
>>>> Melbourne
>>>> <https://urldefense.com/v3/__https://www.google.com/maps/search/385**ABourke**ASt**BMelbourne?entry=gmail&source=g__;wqDCoCvCoA!!OSkwEA!ixmz3KnCk7FeCEOER7k0VgQOdst-3hQ6tig2QotRG6tNQcHE8SCkKucYb2jeSPoJmsDSAHQ6AWUj-A7Sx2OU$>
>>>> , Victoria, 3000
>>>> The contents of this email originated from Iress. For this purpose
>>>> Iress includes Iress Limited and/or any of its subsidiaries, holding
>>>> companies and trading entities. If you have received this email in error
>>>> please notify the sender immediately and delete this email.
>>>> nosig
>>>>
>>> On Sat, 30 Mar 2024 at 2:12 am, Dave Cramer <davecramer(at)gmail(dot)com>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> *CAUTION: *This Email is from an EXTERNAL source. Ensure you trust
>>>>> this sender before clicking on any links or attachments.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Fri, 29 Mar 2024 at 08:41, Jon Raiford <raiford(at)labware(dot)com> wrote:
>>>>>
>>>>>> I’m not familiar with GitHub Actions, but I know you can create data
>>>>>> sources from the command line. This is all stored in the registry, which
>>>>>> you can update using the reg command.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/reg
>>>>>> <https://urldefense.com/v3/__https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/reg__;!!OSkwEA!kxnwxUJLKxa3Oc4LrkTTgAXa9D0wwxO8NOTXoz4JjxveQ82EajBPe0J1twXNrVystZJlxhAOFAQi5AyABfRE$>
>>>>>>
>>>>>>
>>>>>>
>>>>>> The easiest thing to do may be to create a data source manually and
>>>>>> export it into a .reg file. You can then either import the data source
>>>>>> using the reg file or just use it as a template to add the entries as you
>>>>>> like.
>>>>>>
>>>>>>
>>>>>> Just run Regedit and locate the data source you would like to export.
>>>>>>
>>>>>>
>>>>>>
>>>>>> 64-bit System Data Sources: \\HKLM\SOFTWARE\ODBC\
>>>>>> <https://urldefense.com/v3/__http://HKLM/SOFTWARE/ODBC/__;!!OSkwEA!kxnwxUJLKxa3Oc4LrkTTgAXa9D0wwxO8NOTXoz4JjxveQ82EajBPe0J1twXNrVystZJlxhAOFAQi5K4hxQRA$>
>>>>>>
>>>>>> 32-bit System Data Sources: \\HKLM\SOFTWARE\WOW6432Node\ODBC\
>>>>>> <https://urldefense.com/v3/__http://HKLM/SOFTWARE/WOW6432Node/ODBC/__;!!OSkwEA!kxnwxUJLKxa3Oc4LrkTTgAXa9D0wwxO8NOTXoz4JjxveQ82EajBPe0J1twXNrVystZJlxhAOFAQi5EngC-Q_$>
>>>>>>
>>>>>> 64-bit User Data Sources: \\HKCU\SOFTWARE\ODBC\
>>>>>>
>>>>>> 32-bit User Data Sources: \\HKCU\SOFTWARE\ODBC\
>>>>>> <https://urldefense.com/v3/__http://HKCU/SOFTWARE/ODBC/__;!!OSkwEA!kxnwxUJLKxa3Oc4LrkTTgAXa9D0wwxO8NOTXoz4JjxveQ82EajBPe0J1twXNrVystZJlxhAOFAQi5CXxcTt4$>
>>>>>> <- This is mixed in with the 64-bit entries and the driver referenced
>>>>>> determines if 32/64
>>>>>>
>>>>>>
>>>>>>
>>>>>> Drivers are defined under the system keys under the section
>>>>>> ODBCINST.INI. Data sources are defined under the section ODBC.INI, both as
>>>>>> a folder containing the details of the data source as well as an entry
>>>>>> under “ODBC.INI\ODBC Data Sources”, which associates the data source with
>>>>>> the driver to use with it.
>>>>>>
>>>>>>
>>>>>>
>>>>>> I think if you view these entries in Regedit you will see the
>>>>>> relationships between everything. It may help to create a data source for
>>>>>> each type.
>>>>>>
>>>>>>
>>>>>>
>>>>>> The above describes how to create a static ODBC data source.
>>>>>> Alternatively you can use a file DSN or simply make a connection string
>>>>>> from your test case and avoid the data source completely. Although I
>>>>>> suppose you may want to do each in order to test each possibility.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Let me know if you have any questions or need assistance.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Jon
>>>>>>
>>>>>
>>>>> Hey Jon,
>>>>>
>>>>> Thanks, that will help immensely.
>>>>>
>>>>> It's been a while since I've done anything with Windows.
>>>>>
>>>>> Dave
>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> *From: *Dave Cramer <davecramer(at)gmail(dot)com>
>>>>>> *Date: *Friday, March 29, 2024 at 7:25 AM
>>>>>> *To: *PostgreSQL mailing lists <pgsql-odbc(at)postgresql(dot)org>
>>>>>> *Subject: *How to create an ODBC datasource in CI
>>>>>>
>>>>>> Greetings,
>>>>>>
>>>>>>
>>>>>>
>>>>>> In order to test the driver using github actions we need to be able
>>>>>> to create a windows datasource. Usually this requires some kind of user
>>>>>> interaction.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Has anyone done this on GH actions ?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Dave Cramer
>>>>>>
>>>>>

In response to

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message 2024-04-01 06:04:04 Confirmation of Issue with PostgreSQL ODBC Driver for Windows
Previous Message Dave Cramer 2024-03-30 11:08:40 Re: How to create an ODBC datasource in CI