Thread: pgbench tests vs Windows

pgbench tests vs Windows

From
Andrew Dunstan
Date:
In commit ed8a7c6fcf9 we added some extra tests to pgbench, including
this snippet:


    \setshell two\
      expr \
        1 + :one

Unfortunately, this isn't portable, as I've just discovered at the cost
of quite a bit of time. In particular, you can't assume expr is present
and in the path on Windows. The Windows equivalent would be something like:


    \setshell two\
      @set /a c = 1 + :one  && echo %c%


I propose to prepare a patch along these lines. Alternatively we could
just drop it - I don't think the test matters all that hugely.


cheers


andrew


-- 
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: pgbench tests vs Windows

From
Tom Lane
Date:
Andrew Dunstan <andrew.dunstan@2ndquadrant.com> writes:
> In commit ed8a7c6fcf9 we added some extra tests to pgbench, including
> this snippet:
>     \setshell two\
>       expr \
>         1 + :one
> Unfortunately, this isn't portable, as I've just discovered at the cost
> of quite a bit of time. In particular, you can't assume expr is present
> and in the path on Windows.

Ugh.

> The Windows equivalent would be something like:
>     \setshell two\
>       @set /a c = 1 + :one  && echo %c%

I wonder how universal that is, either.

> I propose to prepare a patch along these lines. Alternatively we could
> just drop it - I don't think the test matters all that hugely.

I'd say try that, but if it doesn't work right away, just skip the
test on Windows.

            regards, tom lane



Re: pgbench tests vs Windows

From
Michael Paquier
Date:
On Tue, Jul 23, 2019 at 07:13:51PM -0400, Tom Lane wrote:
> Andrew Dunstan <andrew.dunstan@2ndquadrant.com> writes:
>> I propose to prepare a patch along these lines. Alternatively we could
>> just drop it - I don't think the test matters all that hugely.
>
> I'd say try that, but if it doesn't work right away, just skip the
> test on Windows.

+1.  I don't see exactly why we should drop it either.
--
Michael

Attachment

Re: pgbench tests vs Windows

From
Fabien COELHO
Date:
Hello Andrew,

> Unfortunately, this isn't portable, as I've just discovered at the cost
> of quite a bit of time. In particular, you can't assume expr is present
> and in the path on Windows. The Windows equivalent would be something like:
>
>    \setshell two\
>      @set /a c = 1 + :one  && echo %c%

Hmmm... Can we assume that echo is really always there on Windows? If so, 
the attached patch does something only with "echo".

> I propose to prepare a patch along these lines. Alternatively we could
> just drop it - I don't think the test matters all that hugely.

The point is to have some minimal coverage so that unexpected changes are 
caught. This is the only call to a working \setshell.

-- 
Fabien.
Attachment

Re: pgbench tests vs Windows

From
Andrew Dunstan
Date:
On 7/24/19 3:56 AM, Fabien COELHO wrote:
>
> Hello Andrew,
>
>> Unfortunately, this isn't portable, as I've just discovered at the cost
>> of quite a bit of time. In particular, you can't assume expr is present
>> and in the path on Windows. The Windows equivalent would be something
>> like:
>>
>>    \setshell two\
>>      @set /a c = 1 + :one  && echo %c%
>
> Hmmm... Can we assume that echo is really always there on Windows? If
> so, the attached patch does something only with "echo".


Yes, it's built into the cmd processor (as is "set /a", to answer Tom's
earlier question about portability - I tested the above back to XP.)


echo is much more universal, and I can confirm that the suggested fix
works on the Windows test box I'm using.


I'll apply and backpatch that. Thanks


cheers


andrew

-- 
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services