Edgewall Software

Ticket #4546 (closed enhancement: fixed)

Opened 23 months ago

Last modified 23 months ago

PATCH: Proper UNIX socket support for PostgreSQL

Reported by: pacopablo Owned by: mgood
Priority: normal Milestone: 0.10.4
Component: general Version: 0.10.3
Severity: normal Keywords: postgresql unix socket
Cc: pacopablo@…

Description (last modified by mgood) (diff)

Currently, if one wants to use UNIX sockets for PostgreSQL (much nicer than TCP), trac only supports connecting to the default socket defined in the PGHOST environment variable.

This is hackish.

Attached is a 2 line patch that allows the host to be specified in the database url. it also give preference to UNIX sockets of TCP sockets. This meaning that if a TCP host s specified and a UNIX socket are given, the UNIX socket will be used.

Usage:

postgres://user:password@/database?host=/path/to/socket/dir

Currently, one can only connect to the default socket dir via:

postgres://user:password@/database

Attachments

postgres_unix_socket.patch (0.6 KB) - added by pacopablo 23 months ago.
patch to enable use of UNIX sockets withPostgreSQL
postgres_unix_socket.2.patch (0.6 KB) - added by pacopablo 23 months ago.
updated patch that supports both psycopg2 and pyPgSQL

Change History

Changed 23 months ago by pacopablo

patch to enable use of UNIX sockets withPostgreSQL

  Changed 23 months ago by pacopablo

Ok, so me and my bad typing. Obviously, the examples of the db strings should be the following:

postgres://user:password@/database?host=/path/to/socket/dir

and

postgres://user:password@/database

Will someone please fix the ticket description? Thanks

  Changed 23 months ago by mgood

  • owner changed from jonas to mgood
  • status changed from new to assigned
  • description modified (diff)
  • milestone set to 0.10.4

Looks ok, though I'd like to check out how to do this for pyPgSQL as well too.

Changed 23 months ago by pacopablo

updated patch that supports both psycopg2 and pyPgSQL

follow-up: ↓ 4   Changed 23 months ago by pacopablo

OK, just attached patch that is tested working with both psycopg2 and pyPgSQL.

They are both very similar except that pyPgSQL take positional parameters where psycopg2 takes a dsn. Anyway, the solution was to simply move the 2 lines before the if psycopg: block

in reply to: ↑ 3   Changed 23 months ago by mgood

  • status changed from assigned to closed
  • resolution set to fixed

Replying to pacopablo:

OK, just attached patch that is tested working with both psycopg2 and pyPgSQL.

Thanks. I've applied the patch in r4579 and r4580 with a small change to use the in operator instead of has_key.

Add/Change #4546 (PATCH: Proper UNIX socket support for PostgreSQL)

Author



Change Properties
<Author field>
Action
as closed
Next status will be 'reopened'
to The owner will change from mgood. Next status will be 'closed'
 
Note: See TracTickets for help on using tickets.