• Peter Eisentraut's avatar
    Enable Unix-domain sockets support on Windows · 8f3ec75d
    Peter Eisentraut authored
    As of Windows 10 version 1803, Unix-domain sockets are supported on
    Windows.  But it's not automatically detected by configure because it
    looks for struct sockaddr_un and Windows doesn't define that.  So we
    just make our own definition on Windows and override the configure
    result.
    
    Set DEFAULT_PGSOCKET_DIR to empty on Windows so by default no
    Unix-domain socket is used, because there is no good standard
    location.
    
    In pg_upgrade, we have to do some extra tweaking to preserve the
    existing behavior of not using Unix-domain sockets on Windows.  Adding
    support would be desirable, but it needs further work, in particular a
    way to select whether to use Unix-domain sockets from the command-line
    or with a run-time test.
    
    The pg_upgrade test script needs a fix.  The previous code passed
    "localhost" to postgres -k, which only happened to work because
    Windows used to ignore the -k argument value altogether.  We instead
    need to pass an empty string to get the desired effect.
    
    The test suites will continue to not use Unix-domain sockets on
    Windows.  This requires a small tweak in pg_regress.c.  The TAP tests
    don't need to be changed because they decide by the operating system
    rather than HAVE_UNIX_SOCKETS.
    Reviewed-by: default avatarAndrew Dunstan <andrew.dunstan@2ndquadrant.com>
    Discussion: https://www.postgresql.org/message-id/flat/54bde68c-d134-4eb8-5bd3-8af33b72a010@2ndquadrant.com
    8f3ec75d
option.c 16.1 KB