Thread: [HACKERS] [patch] Build pgoutput with MSVC

[HACKERS] [patch] Build pgoutput with MSVC

From
"MauMau"
Date:
    Hello,

I tried logical replication on Windows, but it failed like this:

postgres=# create subscription mysub connection 'host=localhost
port=5433 user=tuna dbname=postgres' publication mypub with (nocopy
data);
NOTICE:  synchronized table states
ERROR:  could not create replication slot "mysub": ERROR:  could not
access file "pgoutput": No such file or directory
postgres=#

The pgoutput is not built with MSVC.  The attached patch fixes this.
I confirmed that a few INSERTs were replicated correctly.

Should I add this matter in the PostgreSQL 10 Open Items page?

Regards
MauMau

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Attachment

Re: [HACKERS] [patch] Build pgoutput with MSVC

From
Michael Paquier
Date:
On Fri, May 5, 2017 at 6:10 PM, MauMau <maumau307@gmail.com> wrote:
> The pgoutput is not built with MSVC.  The attached patch fixes this.
> I confirmed that a few INSERTs were replicated correctly.
>
> Should I add this matter in the PostgreSQL 10 Open Items page?

Yes, with Peter as committer and Petr as owner.

+    my $pgoutput = $solution->AddProject(
+        'pgoutput', 'dll', '',
+        'src/backend/replication/pgoutput');
+    $pgoutput->AddReference($postgres);
Yup, that's correct.

You have forgotten to update clean.bat, which should clean up pgoutput.dll.
-- 
Michael



Re: [HACKERS] [patch] Build pgoutput with MSVC

From
Magnus Hagander
Date:


On Fri, May 5, 2017 at 11:58 AM, Michael Paquier <michael.paquier@gmail.com> wrote:
On Fri, May 5, 2017 at 6:10 PM, MauMau <maumau307@gmail.com> wrote:
> The pgoutput is not built with MSVC.  The attached patch fixes this.
> I confirmed that a few INSERTs were replicated correctly.
>
> Should I add this matter in the PostgreSQL 10 Open Items page?

Yes, with Peter as committer and Petr as owner.

+    my $pgoutput = $solution->AddProject(
+        'pgoutput', 'dll', '',
+        'src/backend/replication/pgoutput');
+    $pgoutput->AddReference($postgres);
Yup, that's correct.

You have forgotten to update clean.bat, which should clean up pgoutput.dll.

If that's all that's required, I'll just go ahead and commit it right away, including the clean.bat.

I think the problem with clean.bat isn't cleaning up pgoutput.dll -- that one goes in a different directory. But it does need to clean up the win32ver.rc file that gets dropped there automaticaly.

The attached patch itself seems broken (it has some sort of byte order marker at the beginning, but removing that still breaks with "patch unexpectedly ends in middle of line patch: **** Only garbage was found in the patch input.". But I can just copy/paste it manually :)

--

Re: [HACKERS] [patch] Build pgoutput with MSVC

From
Petr Jelinek
Date:
On 05/05/17 12:10, Magnus Hagander wrote:
> 
> On Fri, May 5, 2017 at 11:58 AM, Michael Paquier
> <michael.paquier@gmail.com <mailto:michael.paquier@gmail.com>> wrote:
> 
>     On Fri, May 5, 2017 at 6:10 PM, MauMau <maumau307@gmail.com
>     <mailto:maumau307@gmail.com>> wrote:
>     > The pgoutput is not built with MSVC.  The attached patch fixes this.
>     > I confirmed that a few INSERTs were replicated correctly.
>     >
>     > Should I add this matter in the PostgreSQL 10 Open Items page?
> 
>     Yes, with Peter as committer and Petr as owner.
> 
>     +    my $pgoutput = $solution->AddProject(
>     +        'pgoutput', 'dll', '',
>     +        'src/backend/replication/pgoutput');
>     +    $pgoutput->AddReference($postgres);
>     Yup, that's correct.
> 
>     You have forgotten to update clean.bat, which should clean up
>     pgoutput.dll.
> 
> 
> If that's all that's required, I'll just go ahead and commit it right
> away, including the clean.bat.
> 
> I think the problem with clean.bat isn't cleaning up pgoutput.dll --
> that one goes in a different directory. But it does need to clean up the
> win32ver.rc file that gets dropped there automaticaly.
> 
> The attached patch itself seems broken (it has some sort of byte order
> marker at the beginning, but removing that still breaks with "patch
> unexpectedly ends in middle of line patch: **** Only garbage was found
> in the patch input.". But I can just copy/paste it manually :)
> 

Thanks for fixing this, I admit I have no idea how our windows build
system works.

--  Petr Jelinek                  http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training &
Services



Re: [HACKERS] [patch] Build pgoutput with MSVC

From
"MauMau"
Date:
From: Magnus Hagander
If that's all that's required, I'll just go ahead and commit it right
away, including the clean.bat.

I think the problem with clean.bat isn't cleaning up pgoutput.dll -- 
that one goes in a different directory. But it does need to clean up
the win32ver.rc file that gets dropped there automaticaly.

The attached patch itself seems broken (it has some sort of byte order
marker at the beginning, but removing that still breaks with "patch
unexpectedly ends in middle of line patch: **** Only garbage was found
in the patch input.". But I can just copy/paste it manually :)


Thanks, fixed clean.bat, too.  My original patch was in UTF-16
unexpectedly.  With Git Shell in GitHub Desktop on Windows, "git diff
> filename" seems to produce output in UTF-16.  I guess that's due to
PowerShell.  I think there's nothing else to do, so please commit
this.  Also, I added an item in the Open Items page.

Regards
MauMau

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Attachment

Re: [HACKERS] [patch] Build pgoutput with MSVC

From
Michael Paquier
Date:
On Sat, May 6, 2017 at 7:07 AM, MauMau <maumau307@gmail.com> wrote:
> From: Magnus Hagander
> If that's all that's required, I'll just go ahead and commit it right
> away, including the clean.bat.
>
> I think the problem with clean.bat isn't cleaning up pgoutput.dll --
> that one goes in a different directory. But it does need to clean up
> the win32ver.rc file that gets dropped there automaticaly.
>
> The attached patch itself seems broken (it has some sort of byte order
> marker at the beginning, but removing that still breaks with "patch
> unexpectedly ends in middle of line patch: **** Only garbage was found
> in the patch input.". But I can just copy/paste it manually :)
>
>
> Thanks, fixed clean.bat, too.  My original patch was in UTF-16
> unexpectedly.  With Git Shell in GitHub Desktop on Windows, "git diff
>> filename" seems to produce output in UTF-16.  I guess that's due to
> PowerShell.  I think there's nothing else to do, so please commit
> this.  Also, I added an item in the Open Items page.

Magnus has already pushed it as 28d1c8c.

+if exist src\backend\replication\libpqwalreceiver\win32ver.rc del /q
src\backend\replication\pgoutput\win32ver.rc
This is not right by the way, you need to check for the existence of
the file in pgoutput/, not libpqwalreceiver/.
-- 
Michael



Re: [HACKERS] [patch] Build pgoutput with MSVC

From
"MauMau"
Date:
From: Michael Paquier
Magnus has already pushed it as 28d1c8c.

+if exist src\backend\replication\libpqwalreceiver\win32ver.rc del /q
src\backend\replication\pgoutput\win32ver.rc
This is not right by the way, you need to check for the existence of
the file in pgoutput/, not libpqwalreceiver/.


I'm relieved to hear that's already committed.  Oh, how careless I
was, thanks.

Regards
MauMau