Thread: PATCH: To fix expanding server if server inaccessible (pgAdmin4)
Hi,
As advised by Ashesh, I have tried flask 'threaded' options for this issues & it fixed the issue.
PFA patches to fix long load delay when expanding server if server is inaccessible.
(RM#1185).
------
Additional patches to enhance misc validations in menu.js/schema.js/dashboard.js.
(There are no RM's for these fixes, these are just enhancements)
--
Regards,
Attachment
Hi On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote: > Hi, > > As advised by Ashesh, I have tried flask 'threaded' options for this issues > & it fixed the issue. > > PFA patches to fix long load delay when expanding server if server is > inaccessible. > (RM#1185). That'll only affect users running under Werkzeug. What about Apache? Is it an issue there? > ------ > Additional patches to enhance misc validations in > menu.js/schema.js/dashboard.js. Please detail what these are intended to fix. > (There are no RM's for these fixes, these are just enhancements) > > > -- > Regards, > Murtuza Zabuawala > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > > -- > Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgadmin-hackers > -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
On Tue, May 31, 2016 at 8:28 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi
On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala
<murtuza.zabuawala@enterprisedb.com> wrote:
> Hi,
>
> As advised by Ashesh, I have tried flask 'threaded' options for this issues
> & it fixed the issue.
>
> PFA patches to fix long load delay when expanding server if server is
> inaccessible.
> (RM#1185).
That'll only affect users running under Werkzeug. What about Apache?
Is it an issue there?
A while ago - we discussed about the connection management issue, and we decided to write a deployment guide about using pgAdmin 4 as WSGI application under HTTPD using mod_wsgi.
And, while configuring Apache, we will need to use the WSGIDaemon option with mod_wsgi, which will allow us to specify the number of threads to be used for request handling at a time.
Reference:
--
Thanks & Regards,
Ashesh Vashi
> ------
> Additional patches to enhance misc validations in
> menu.js/schema.js/dashboard.js.
Please detail what these are intended to fix.
> (There are no RM's for these fixes, these are just enhancements)
>
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> --
> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgadmin-hackers
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
On Tue, May 31, 2016 at 8:28 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi
On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala
<murtuza.zabuawala@enterprisedb.com> wrote:
> Hi,
>
> As advised by Ashesh, I have tried flask 'threaded' options for this issues
> & it fixed the issue.
>
> PFA patches to fix long load delay when expanding server if server is
> inaccessible.
> (RM#1185).
That'll only affect users running under Werkzeug. What about Apache?
Is it an issue there?A while ago - we discussed about the connection management issue, and we decided to write a deployment guide about using pgAdmin 4 as WSGI application under HTTPD using mod_wsgi.And, while configuring Apache, we will need to use the WSGIDaemon option with mod_wsgi, which will allow us to specify the number of threads to be used for request handling at a time.Reference:
Right, and I wrote that guide - it's in the docs :-)
I just wanted to be sure that this particular issue isn't a problem in such a configuration.
--Thanks & Regards,Ashesh Vashi
> ------
> Additional patches to enhance misc validations in
> menu.js/schema.js/dashboard.js.
Please detail what these are intended to fix.
> (There are no RM's for these fixes, these are just enhancements)
>
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> --
> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgadmin-hackers
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
On Tue, May 31, 2016 at 11:56 PM, Dave Page <dpage@pgadmin.org> wrote:
On Tue, May 31, 2016 at 8:28 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi
On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala
<murtuza.zabuawala@enterprisedb.com> wrote:
> Hi,
>
> As advised by Ashesh, I have tried flask 'threaded' options for this issues
> & it fixed the issue.
>
> PFA patches to fix long load delay when expanding server if server is
> inaccessible.
> (RM#1185).
That'll only affect users running under Werkzeug. What about Apache?
Is it an issue there?A while ago - we discussed about the connection management issue, and we decided to write a deployment guide about using pgAdmin 4 as WSGI application under HTTPD using mod_wsgi.And, while configuring Apache, we will need to use the WSGIDaemon option with mod_wsgi, which will allow us to specify the number of threads to be used for request handling at a time.Reference:Right, and I wrote that guide - it's in the docs :-)
:-).
Good - I was thinking - you would ask me to write.. :P
I just wanted to be sure that this particular issue isn't a problem in such a configuration.
It is not.
--
Thanks & Regards,
Ashesh Vashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company
--Thanks & Regards,Ashesh Vashi
> ------
> Additional patches to enhance misc validations in
> menu.js/schema.js/dashboard.js.
Please detail what these are intended to fix.
> (There are no RM's for these fixes, these are just enhancements)
>
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> --
> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgadmin-hackers
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Hi Dave,
On 01-Jun-2016, at 12:03 am, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:On Tue, May 31, 2016 at 11:56 PM, Dave Page <dpage@pgadmin.org> wrote:On Tue, May 31, 2016 at 8:28 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi
On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala
<murtuza.zabuawala@enterprisedb.com> wrote:
> Hi,
>
> As advised by Ashesh, I have tried flask 'threaded' options for this issues
> & it fixed the issue.
>
> PFA patches to fix long load delay when expanding server if server is
> inaccessible.
> (RM#1185).
That'll only affect users running under Werkzeug. What about Apache?
Is it an issue there?A while ago - we discussed about the connection management issue, and we decided to write a deployment guide about using pgAdmin 4 as WSGI application under HTTPD using mod_wsgi.And, while configuring Apache, we will need to use the WSGIDaemon option with mod_wsgi, which will allow us to specify the number of threads to be used for request handling at a time.Reference:Right, and I wrote that guide - it's in the docs :-):-).Good - I was thinking - you would ask me to write.. :PI just wanted to be sure that this particular issue isn't a problem in such a configuration.It is not.--Thanks & Regards,
Ashesh Vashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company--Thanks & Regards,Ashesh Vashi
> ------
> Additional patches to enhance misc validations in
> menu.js/schema.js/dashboard.js.
Please detail what these are intended to fix.
Mostly we get object 'XYZ is undefined' OR 'XYZ Null' errors.
PFA screenshot for example.

> (There are no RM's for these fixes, these are just enhancements)
>
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> --
> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgadmin-hackers
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Attachment
Thanks - all patches are committed!
On Wed, Jun 1, 2016 at 11:04 AM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
Hi Dave,Here, we have added validation checks before accessing object.On 01-Jun-2016, at 12:03 am, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:On Tue, May 31, 2016 at 11:56 PM, Dave Page <dpage@pgadmin.org> wrote:On Tue, May 31, 2016 at 8:28 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi
On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala
<murtuza.zabuawala@enterprisedb.com> wrote:
> Hi,
>
> As advised by Ashesh, I have tried flask 'threaded' options for this issues
> & it fixed the issue.
>
> PFA patches to fix long load delay when expanding server if server is
> inaccessible.
> (RM#1185).
That'll only affect users running under Werkzeug. What about Apache?
Is it an issue there?A while ago - we discussed about the connection management issue, and we decided to write a deployment guide about using pgAdmin 4 as WSGI application under HTTPD using mod_wsgi.And, while configuring Apache, we will need to use the WSGIDaemon option with mod_wsgi, which will allow us to specify the number of threads to be used for request handling at a time.Reference:Right, and I wrote that guide - it's in the docs :-):-).Good - I was thinking - you would ask me to write.. :PI just wanted to be sure that this particular issue isn't a problem in such a configuration.It is not.--Thanks & Regards,
Ashesh Vashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company--Thanks & Regards,Ashesh Vashi
> ------
> Additional patches to enhance misc validations in
> menu.js/schema.js/dashboard.js.
Please detail what these are intended to fix.Mostly we get object 'XYZ is undefined' OR 'XYZ Null' errors.PFA screenshot for example.> (There are no RM's for these fixes, these are just enhancements)
>
>
> --
> Regards,
> Murtuza Zabuawala
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> --
> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgadmin-hackers
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Attachment
On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote: > Hi, > > As advised by Ashesh, I have tried flask 'threaded' options for this issues > & it fixed the issue. > > PFA patches to fix long load delay when expanding server if server is > inaccessible. > (RM#1185). This appears to have broken the dashboards - the graphs now periodically flash up error messages. On the console this coincides with: 2016-06-02 13:50:37,494: ERROR pgadmin: Exception on /dashboard/tps_stats/1 [GET] Traceback (most recent call last): File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app response = self.full_dispatch_request() File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request rv = self.handle_user_exception(e) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception reraise(exc_type, exc_value, tb) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request rv = self.dispatch_request() File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py", line 758, in decorated_view return func(*args, **kwargs) File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py", line 147, in wrap return f(*args, **kwargs) File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py", line 258, in tps_stats return get_data(sid, did, 'tps_stats.sql') File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py", line 220, in get_data "/".join([server_info['template_path'], template]), did=did KeyError: 'template_path' (or a similar error about another member in server_info). I'm guessing this means that data is not being made available to each thread? We need to fix this ASAP so we're ready to release tomorrow. -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
I will look into it..
On Thu, Jun 2, 2016 at 6:23 PM, Dave Page <dpage@pgadmin.org> wrote:
On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala
<murtuza.zabuawala@enterprisedb.com> wrote:
> Hi,
>
> As advised by Ashesh, I have tried flask 'threaded' options for this issues
> & it fixed the issue.
>
> PFA patches to fix long load delay when expanding server if server is
> inaccessible.
> (RM#1185).
This appears to have broken the dashboards - the graphs now
periodically flash up error messages. On the console this coincides
with:
2016-06-02 13:50:37,494: ERROR pgadmin: Exception on
/dashboard/tps_stats/1 [GET]
Traceback (most recent call last):
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py",
line 758, in decorated_view
return func(*args, **kwargs)
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 147, in wrap
return f(*args, **kwargs)
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 258, in tps_stats
return get_data(sid, did, 'tps_stats.sql')
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 220, in get_data
"/".join([server_info['template_path'], template]), did=did
KeyError: 'template_path'
(or a similar error about another member in server_info).
I'm guessing this means that data is not being made available to each
thread? We need to fix this ASAP so we're ready to release tomorrow.
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Hi Dave/Ashesh,
Please find patch for the dashboard issue, Please review it.
I tried with both config options "threaded=True" & "threaded=False", In both cases this fix working fine.
--
Regards,
On Thu, Jun 2, 2016 at 7:02 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
I will look into it..On Thu, Jun 2, 2016 at 6:23 PM, Dave Page <dpage@pgadmin.org> wrote:On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala
<murtuza.zabuawala@enterprisedb.com> wrote:
> Hi,
>
> As advised by Ashesh, I have tried flask 'threaded' options for this issues
> & it fixed the issue.
>
> PFA patches to fix long load delay when expanding server if server is
> inaccessible.
> (RM#1185).
This appears to have broken the dashboards - the graphs now
periodically flash up error messages. On the console this coincides
with:
2016-06-02 13:50:37,494: ERROR pgadmin: Exception on
/dashboard/tps_stats/1 [GET]
Traceback (most recent call last):
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py",
line 758, in decorated_view
return func(*args, **kwargs)
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 147, in wrap
return f(*args, **kwargs)
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 258, in tps_stats
return get_data(sid, did, 'tps_stats.sql')
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 220, in get_data
"/".join([server_info['template_path'], template]), did=did
KeyError: 'template_path'
(or a similar error about another member in server_info).
I'm guessing this means that data is not being made available to each
thread? We need to fix this ASAP so we're ready to release tomorrow.
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Attachment
Thanks - pushed.
On Thu, Jun 2, 2016 at 3:35 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
Hi Dave/Ashesh,Please find patch for the dashboard issue, Please review it.I tried with both config options "threaded=True" & "threaded=False", In both cases this fix working fine.--Regards,On Thu, Jun 2, 2016 at 7:02 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:I will look into it..On Thu, Jun 2, 2016 at 6:23 PM, Dave Page <dpage@pgadmin.org> wrote:On Tue, May 31, 2016 at 3:43 PM, Murtuza Zabuawala
<murtuza.zabuawala@enterprisedb.com> wrote:
> Hi,
>
> As advised by Ashesh, I have tried flask 'threaded' options for this issues
> & it fixed the issue.
>
> PFA patches to fix long load delay when expanding server if server is
> inaccessible.
> (RM#1185).
This appears to have broken the dashboards - the graphs now
periodically flash up error messages. On the console this coincides
with:
2016-06-02 13:50:37,494: ERROR pgadmin: Exception on
/dashboard/tps_stats/1 [GET]
Traceback (most recent call last):
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py",
line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py",
line 758, in decorated_view
return func(*args, **kwargs)
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 147, in wrap
return f(*args, **kwargs)
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 258, in tps_stats
return get_data(sid, did, 'tps_stats.sql')
File "/Users/dpage/git/pgadmin4/web/pgadmin/dashboard/__init__.py",
line 220, in get_data
"/".join([server_info['template_path'], template]), did=did
KeyError: 'template_path'
(or a similar error about another member in server_info).
I'm guessing this means that data is not being made available to each
thread? We need to fix this ASAP so we're ready to release tomorrow.
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company