Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fVz9t-0006OI-NY for pgadmin-hackers@arkaria.postgresql.org; Thu, 21 Jun 2018 12:57:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fVz9r-0000Kq-O8 for pgadmin-hackers@arkaria.postgresql.org; Thu, 21 Jun 2018 12:57:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fVz9r-0000Kj-C6 for pgadmin-hackers@lists.postgresql.org; Thu, 21 Jun 2018 12:57:51 +0000 Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fVz9n-00009u-48 for pgadmin-hackers@postgresql.org; Thu, 21 Jun 2018 12:57:50 +0000 Received: by mail-wm0-x22d.google.com with SMTP id r15-v6so5025148wmc.1 for ; Thu, 21 Jun 2018 05:57:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pgadmin-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=sO7SaLzOXJEJVE802QZSHKqlfMipvfAZUVC4Q+MAEn4=; b=bdoxekt2tr5oZvq0xhRZGt74+7t8YklIiI9oJcQsL8tkNx6jNh5BrsNRiTWghik8wn c2bcgMDIsM+aEKCh069DFv3OEUNcJ7oILfuxHr5g8N3ajmFwoQDiXzCvAlOkU7qdHZAe 92Si/LlbCzlKUGUKV6NA02T9SoUkL9cFXvHE6fcmAY36iiPsiVoBvoidPWpgQY/5Jq8w idx2pmVdGK5N7P/whxEJ/ECjLPHqzln12FLk8/DMMgpcRpYjX9I9uBhl3n3j1/ylz0ar NDpZT30IvCP0BFcYAr365piLacY42CapmSFs9KzEC2YORZA/tFCXjh6wxlL/aQUH93nr ulYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=sO7SaLzOXJEJVE802QZSHKqlfMipvfAZUVC4Q+MAEn4=; b=b69qvJ2HiMJoH5grH6dm9uY1//cYbZ/jkagjizzB7D5igL1yv2voHEZTzGy6QElYYd CK2bKmyHyFmunUpi8Z4PkSMN3phITVvp8N5gN6iycjPbLec3y7UxjfEsEzBZ6W1NRLag RfN+d0Jx1qWnQhJrtfoyWoeGoUOtILVgdPuCbbBiJYuKedFN8X539xi1Z/bRr1BzcsDx Vz+rkM7AaHB43WUlN4UpPUxayYaGC96/m1UDH4u/GIXPTM6VDCLHK03tQvBYU+WggWMQ wBTx5AULtZ3kP5E6J+9FJmjKxvWBT2s3WCm7kijndtOyKgcNhH8H1jv/Sus4esh3qmga Pfag== X-Gm-Message-State: APt69E0alVnPudLhj2yR2loeWDwcVM+SDRI6KRjktLrFQVEnigABZrYG zEhMj6VkLDO37VD8B1Q1ii5AVLT7rRecuFBE+Oevvg== X-Google-Smtp-Source: ADUXVKLwPU6CF43w96ui/vhEg1MPqCy8L5hOWoHqAt+nezzvgW2nwvVNuI32egMRo5XGkvI3kGbVDuCekk4nstfVji4= X-Received: by 2002:a1c:3ac6:: with SMTP id h189-v6mr5470144wma.64.1529585863887; Thu, 21 Jun 2018 05:57:43 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a1c:2907:0:0:0:0:0 with HTTP; Thu, 21 Jun 2018 05:57:42 -0700 (PDT) In-Reply-To: References: From: Dave Page Date: Thu, 21 Jun 2018 13:57:42 +0100 Message-ID: Subject: Re: [pgAdmin4][RM#3289] Can't query SQL_ASCII database. To: Aditya Toshniwal Cc: Joao De Almeida Pereira , pgadmin-hackers Content-Type: multipart/alternative; boundary="000000000000122619056f2676ae" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000122619056f2676ae Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks - patch applied! On Wed, Jun 20, 2018 at 3:17 PM, Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Hi Dave, > > Attached is the updated patch. (Playing with encodings is not at all fun > :( ) > > On Tue, Jun 19, 2018 at 2:23 AM, Dave Page wrote: > >> Hi >> >> On Mon, Jun 18, 2018 at 2:14 PM, Aditya Toshniwal < >> aditya.toshniwal@enterprisedb.com> wrote: >> >>> Hi Hackers, >>> >>> Attached is the updated patch which includes the fix for Download CSV >>> fail in SQL_ASCII database, which is RM3250 >>> >>> This should fix RM3289 and RM3250. As they interrelated, sending the >>> combined patch. >>> Kindly review. >>> >> >> This is definitely looking better - both view and save now work as >> expected. However, using the test data the I posted upthread, if I try t= o >> edit a value (in this case by adding a couple of chars to the end of the >> data in row 2) I get: >> > It should fix the error. > >> >> 2018-06-18 16:41:40,895: SQL pgadmin: Execute (void) for server #1 - >> DB:ascii (Query-id: 3093186): >> UPDATE public.ascii SET >> data =3D %(data)s::text WHERE >> id =3D '2'; >> 2018-06-18 16:41:41,027: INFO werkzeug: 127.0.0.1 - - [18/Jun/2018 >> 16:41:41] "POST /sqleditor/save/2805058 HTTP/1.1" 500 - >> 2018-06-18 16:41:41,042: ERROR werkzeug: Error on request: >> Traceback (most recent call last): >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/w= erkzeug/serving.py", >> line 270, in run_wsgi >> execute(self.server.app) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/w= erkzeug/serving.py", >> line 258, in execute >> application_iter =3D app(environ, start_response) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask/app.py", >> line 1997, in __call__ >> return self.wsgi_app(environ, start_response) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask/app.py", >> line 1985, in wsgi_app >> response =3D self.handle_exception(e) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask/app.py", >> line 1540, in handle_exception >> reraise(exc_type, exc_value, tb) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask/app.py", >> line 1982, in wsgi_app >> response =3D self.full_dispatch_request() >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask/app.py", >> line 1614, in full_dispatch_request >> rv =3D self.handle_user_exception(e) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask/app.py", >> line 1517, in handle_user_exception >> reraise(exc_type, exc_value, tb) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask/app.py", >> line 1612, in full_dispatch_request >> rv =3D self.dispatch_request() >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask/app.py", >> line 1598, in dispatch_request >> return self.view_functions[rule.endpoint](**req.view_args) >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/f= lask_login.py", >> line 792, in decorated_view >> return func(*args, **kwargs) >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/__init__.p= y", >> line 776, in save >> default_conn) >> File "/Users/dpage/git/pgadmin4/web/pgadmin/tools/sqleditor/command.py= ", >> line 829, in save >> item['sql'], item['data']) >> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/conn= ection.py", >> line 975, in execute_void >> self.__internal_blocking_execute(cur, query, params) >> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/conn= ection.py", >> line 629, in __internal_blocking_execute >> cur.execute(query, params) >> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/curs= or.py", >> line 176, in execute >> return _cursor.execute(self, query, params) >> UnicodeEncodeError: 'ascii' codec can't encode characters in position >> 19-21: ordinal not in range(128) >> >> >>> >>> On Fri, Jun 15, 2018 at 2:33 PM, Aditya Toshniwal < >>> aditya.toshniwal@enterprisedb.com> wrote: >>> >>>> Hi Dave, >>>> >>>> On Fri, Jun 15, 2018 at 2:08 PM, Dave Page wrote: >>>> >>>>> Hi >>>>> >>>>> On Thu, Jun 14, 2018 at 7:05 AM, Aditya Toshniwal < >>>>> aditya.toshniwal@enterprisedb.com> wrote: >>>>> >>>>>> I am sorry I missed the attachment. :( >>>>>> PFA. >>>>>> >>>>> >>>>> It looks like the encoding names are getting munged somewhere. I see >>>>> you've accounted for that to some degree in connection.py (you have b= oth >>>>> SQL_ASCII/MULE_INTERNAL and SQLASCII/MULEINTERNAL), however it doesn'= t seem >>>>> to be enough as I'm getting the following error when trying to downlo= ad CSV >>>>> from the query tool. Can we ensure that conn.encoding contains an un-= munged >>>>> value at all times, or is that coming from psycopg2? >>>>> >>>> =E2=80=8BThat is done by pyscopg2 and conn.encoding is a psycopg2 conn= ection >>>> property.=E2=80=8B >>>> >>>> >>>>> >>>>> 2018-06-15 09:32:28,799: INFO werkzeug: 127.0.0.1 - - [15/Jun/2018 >>>>> 09:32:28] "GET /sqleditor/query_tool/download >>>>> /2732923?query=3DSELECT%20*%20FROM%20public.sql_ascii%0AORDER% >>>>> 20BY%20id%20ASC%20&filename=3Dsql_ascii.csv HTTP/1.1" 500 - >>>>> 2018-06-15 09:32:28,801: ERROR werkzeug: Error on request: >>>>> Traceback (most recent call last): >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/serving.py", >>>>> line 270, in run_wsgi >>>>> execute(self.server.app) >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/serving.py", >>>>> line 260, in execute >>>>> for data in application_iter: >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/wsgi.py", >>>>> line 870, in __next__ >>>>> return self._next() >>>>> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/wrappers.py", >>>>> line 82, in _iter_encoded >>>>> for item in iterable: >>>>> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/driver/psycopg2/c= onnection.py", >>>>> line 752, in gen >>>>> column_name =3D column_name.decode(conn_encoding) >>>>> LookupError: unknown encoding: SQLASCII >>>>> >>>> >>>> =E2=80=8BThis is because there is code bug here. Below is code used to= decode a >>>> column name. Connection encoding and python encoding are two different >>>> things. Python does not know what SQLASCII is. This will work with UTF= -8 >>>> because python has decoder with same name. I tried to download CSV wit= h the >>>> original code without changes and it fails there too. I will fix this = and >>>> will send the updated patch. I should have checked this. >>>> conn_encoding =3D cur.connection.encoding >>>> column_name =3D column_name.decode(conn_encoding)=E2=80=8B >>>> >>>> >>>>> >>>>> -- >>>>> Dave Page >>>>> Blog: http://pgsnake.blogspot.com >>>>> Twitter: @pgsnake >>>>> >>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>> The Enterprise PostgreSQL Company >>>>> >>>> >>>> >>>> >>>> -- >>>> Thanks and Regards, >>>> Aditya Toshniwal >>>> Software Engineer | EnterpriseDB Software Solutions | Pune >>>> "Don't Complain about Heat, Plant a tree" >>>> >>> >>> >>> >>> -- >>> Thanks and Regards, >>> Aditya Toshniwal >>> Software Engineer | EnterpriseDB Software Solutions | Pune >>> "Don't Complain about Heat, Plant a tree" >>> >> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > > > -- > Thanks and Regards, > Aditya Toshniwal > Software Engineer | EnterpriseDB Software Solutions | Pune > "Don't Complain about Heat, Plant a tree" > --=20 Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company --000000000000122619056f2676ae Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks - patch applied!
On Wed, Jun 20, 2018 at 3:17 PM, Aditya Toshni= wal <aditya.toshniwal@enterprisedb.com> wrot= e:
Hi Dave,

Attached i= s the updated patch. (Playing with encodings is not at all fun :( )

On= Tue, Jun 19, 2018 at 2:23 AM, Dave Page <dpage@pgadmin.org>= wrote:
Hi

On Mon, Jun 18, 2018 at 2:14 PM, Aditya Toshniwal <= adit= ya.toshniwal@enterprisedb.com> wrote:
Hi Hackers,

Attached= is the updated patch which includes the fix for Download CSV fail in SQL_A= SCII database, which is RM3250=C2=A0
This should fix RM3289 and RM3250. As they interrelated, sen= ding the combined patch.
Kindly review.

This is = definitely looking better - both view and save now work as expected. Howeve= r, using the test data the I posted upthread, if I try to edit a value (in = this case by adding a couple of chars to the end of the data in row 2) I ge= t:
It should fix the error.=C2=A0=C2=A0

2018= -06-18 16:41:40,895: SQL pgadmi= n: Execute (void) for server #1= - DB:ascii (Query-id: 3093186):
UPDATE public.ascii SET
data =3D %(data)s::text WHERE
id =3D '2';
201= 8-06-18 16:41:41,027: INFO werk= zeug: 127.0.0.1 - - [18/Jun/201= 8 16:41:41] "POST /sqleditor/save/2805058 HTTP/1.1" 500 -
2018-06-18 16:41:41,042: ERROR werkzeug: Error on request:<= /div>
Traceback (most recent call last):
=C2=A0 File &q= uot;/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/serving.py", line 270, in run_wsgi
=C2=A0 =C2=A0 = execute(self.server.app)
=C2=A0 File "/Users/dpage/.v= irtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.= py", line 258, in execute
=C2=A0 =C2=A0 application_iter =3D= app(environ, start_response)
=C2=A0 File "/Users/dpag= e/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py&= quot;, line 1997, in __call__
=C2=A0 =C2=A0 return self.wsgi_app(= environ, start_response)
=C2=A0 File "/Users/dpage/.virtuale= nvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line= 1985, in wsgi_app
=C2=A0 =C2=A0 response =3D self.handle_excepti= on(e)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/l= ib/python2.7/site-packages/flask/app.py", line 1540, in handle_ex= ception
=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)
= =C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/sit= e-packages/flask/app.py", line 1982, in wsgi_app
=C2=A0= =C2=A0 response =3D self.full_dispatch_request()
=C2=A0 File &qu= ot;/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages= /flask/app.py", line 1614, in full_dispatch_request
=C2=A0 = =C2=A0 rv =3D self.handle_user_exception(e)
=C2=A0 File "/Us= ers/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask= /app.py", line 1517, in handle_user_exception
=C2=A0 =C2=A0 = reraise(exc_type, exc_value, tb)
=C2=A0 File "/Users/dpage/.= virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py&quo= t;, line 1612, in full_dispatch_request
=C2=A0 =C2=A0 rv =3D self= .dispatch_request()
=C2=A0 File "/Users/dpage/.virtualenvs/p= gadmin4/lib/python2.7/site-packages/flask/app.py", line 1598= , in dispatch_request
=C2=A0 =C2=A0 return self.view_functions[ru= le.endpoint](**req.view_args)
=C2=A0 File "/Users/dpage= /.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py= ", line 792, in decorated_view
=C2=A0 =C2=A0 return func(*ar= gs, **kwargs)
=C2=A0 File "/Users/dpage/git/pgadmin4/= web/pgadmin/tools/sqleditor/__init__.py", line 776, in save<= /div>
=C2=A0 =C2=A0 default_conn)
=C2=A0 File "/Users/dp= age/git/pgadmin4/web/pgadmin/tools/sqleditor/command.py", li= ne 829, in save
=C2=A0 =C2=A0 item['sql'], item['data= '])
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgad= min/utils/driver/psycopg2/connection.py", line 975, in execute_vo= id
=C2=A0 =C2=A0 self.__internal_blocking_execute(cur, query= , params)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pg= admin/utils/driver/psycopg2/connection.py", line 629, in __intern= al_blocking_execute
=C2=A0 =C2=A0 cur.execute(query, params)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/dr= iver/psycopg2/cursor.py", line 176, in execute
=C2=A0 = =C2=A0 return _cursor.execute(self, query, params)
UnicodeEncodeE= rror: 'ascii' codec can't encode characters in position 19-21: = ordinal not in range(128)
=C2=A0

On Fri, Jun 15, 2018 at 2:33 PM, = Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
<= div dir=3D"ltr">
Hi Dave,

On Fri, Ju= n 15, 2018 at 2:08 PM, Dave Page <dpage@pgadmin.org> wrote:<= br>
Hi

On Thu, Jun 14, 2018 at 7:05 AM, Aditya Toshniwal = <aditya.toshniwal@enterprisedb.com> wro= te:
I= am sorry I missed the attachment. :(
PFA.

It looks like the encoding names are getting munged = somewhere. I see you've accounted for that to some degree in connection= .py (you have both SQL_ASCII/MULE_INTERNAL and SQLASCII/MULEINTERNAL), howe= ver it doesn't seem to be enough as I'm getting the following error= when trying to download CSV from the query tool. Can we ensure that conn.e= ncoding contains an un-munged value at all times, or is that coming from ps= ycopg2?
=E2=80=8BThat is done by py= scopg2 and conn.encoding is a psycopg2 connection property.=E2=80=8B
= =C2=A0
<= br>
2018-06-15 09:32:28,799: INFO werkzeug: 127= .0.0.1 - - [15/Jun/2018 09:32:28] "GET /sqleditor/query_tool/download<= wbr>/2732923?query=3DSELECT%20*%20FROM%20public.sql_ascii%0AORDER%20BY%20id%20ASC%20&filename=3Dsql_ascii.csv HTTP/1.1" 500 -<= /div>
2018-06-15 09:32:28,801: ERROR werkzeug: Error on re= quest:
Traceback (most re= cent call last):
=C2=A0 File "/Users/dpage/.virtualen= vs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py"= , line 270, in run_wsgi
=C2=A0 =C2=A0 execute(self.server.app)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/pytho= n2.7/site-packages/werkzeug/serving.py", line 260, in execute
=C2=A0 =C2=A0 for data in application_iter:
=C2=A0 File &q= uot;/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-package= s/werkzeug/wsgi.py", line 870, in __next__
=C2=A0 =C2=A0 ret= urn self._next()
=C2=A0 File "/Users/dpage/.virtualenvs/pga<= wbr>dmin4/lib/python2.7/site-packages/werkzeug/wrappers.py", line= 82, in _iter_encoded
=C2=A0 =C2=A0 for item in iterable:
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/drive= r/psycopg2/connection.py", line 752, in gen
=C2=A0 =C2= =A0 column_name =3D column_name.decode(conn_encoding)
Lookup= Error: unknown encoding: SQLASCII
=C2=A0
=E2=80=8BThis is because there is code bug here. Belo= w is code used to decode a column name. Connection encoding and python enco= ding are two different things. Python does not know what SQLASCII is. This = will work with UTF-8 because python has decoder with same name. I tried to = download CSV with the original code without changes and it fails there too.= I will fix this and will send the updated patch. I should have checked thi= s.
conn_encoding =3D cur.connection.encoding
column_name =3D column_n= ame.decode(conn_encoding)=E2=80=8B
=C2=A0

--
<= div class=3D"m_-731285308226204720m_2945951049890774816gmail-m_-19860742992= 26162598m_-4923365390318353705gmail-m_6727611468553874476gmail_signature">D= ave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB U= K: http://www.ent= erprisedb.com
The Enterprise PostgreSQL Company



--
Thanks and Regards,
Aditya Toshniwal
Software Engineer |=C2=A0EnterpriseDB Software Solutions |= =C2=A0Pune
"Don't Complain about Heat, Plant a tree"=



--
Thanks and Regards,=
Aditya Toshniwal
Software Enginee= r |=C2=A0EnterpriseDB Software Solutions |=C2=A0Pune
"Don&#= 39;t Complain about Heat, Plant a tree"



--
Dave Page
Blog: http://pgsnake.blog= spot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.comThe Enterprise PostgreSQL Company



--
<= font face=3D"trebuchet ms, sans-serif" size=3D"2" color=3D"#000000">Thanks = and Regards,
<= font face=3D"trebuchet ms, sans-serif" size=3D"2" color=3D"#000000">Aditya = Toshniwal
Software Engineer |=C2=A0EnterpriseDB Software Solutions |=C2=A0<= /span>Pune
"Don't Complain about Heat, Plant a tree"=



--
Dave Page
Blog: = http://pgsnake.bl= ogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com<= br>The Enterprise PostgreSQL Company
--000000000000122619056f2676ae--