Edgewall Software
Modify

Ticket #4546 (closed enhancement: fixed)

Opened 5 years ago

Last modified 5 years 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@…
Release Notes:
API Changes:

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 (581 bytes) - added by pacopablo 5 years ago.
patch to enable use of UNIX sockets withPostgreSQL
postgres_unix_socket.2.patch (579 bytes) - added by pacopablo 5 years ago.
updated patch that supports both psycopg2 and pyPgSQL

Download all attachments as: .zip

Change History

Changed 5 years ago by pacopablo

patch to enable use of UNIX sockets withPostgreSQL

comment:1 Changed 5 years 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

comment:2 Changed 5 years ago by mgood

  • Description modified (diff)
  • Milestone set to 0.10.4
  • Owner changed from jonas to mgood
  • Status changed from new to assigned

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

Changed 5 years ago by pacopablo

updated patch that supports both psycopg2 and pyPgSQL

comment:3 follow-up: Changed 5 years 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

comment:4 in reply to: ↑ 3 Changed 5 years ago by mgood

  • Resolution set to fixed
  • Status changed from assigned to closed

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.

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
to The owner will be changed from mgood. Next status will be 'closed'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.