Re: [pgAdmin4][Patch]: To handle long numbers for Rows (estimated)field in Table's properties - Mailing list pgadmin-hackers

From Dave Page
Subject Re: [pgAdmin4][Patch]: To handle long numbers for Rows (estimated)field in Table's properties
Date
Msg-id CA+OCxow2WcCT9Z=QSmjxqKwxfiufArpmgEq6=zCoJwm0RzG_hA@mail.gmail.com
Whole thread Raw
In response to Re: [pgAdmin4][Patch]: To handle long numbers for Rows (estimated) field in Table's properties  (Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com>)
Responses Re: [pgAdmin4][Patch]: To handle long numbers for Rows (estimated) field in Table's properties  (Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com>)
List pgadmin-hackers
Hi

I created a table with:

create table bigun as select * from generate_series(0, 1000000)

I then selected it in the treeview, and it showed 0 for estimated rows, and nothing at all for counted rows. I ran a vacuum full on the new table, and now it fails to display the properties. On the console I see:

Exception in thread Thread-1618:
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 602, in process_request_thread
    self.handle_error(request, client_address)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 599, in process_request_thread
    self.finish_request(request, client_address)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 655, in __init__
    self.handle()
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", line 200, in handle
    rv = BaseHTTPRequestHandler.handle(self)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 340, in handle
    self.handle_one_request()
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", line 235, in handle_one_request
    return self.run_wsgi()
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", line 177, in run_wsgi
    execute(self.server.app)
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", line 165, in execute
    application_iter = app(environ, start_response)
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 2000, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1991, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1567, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1641, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1544, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1639, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1625, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/utils.py", line 242, in dispatch_request
    return method(*args, **kwargs)
  File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/utils.py", line 150, in wrap
    return f(*args, **kwargs)
  File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/__init__.py", line 574, in properties
    estimated_row_count = int(res['rows'][0].get('reltuples', 0))
ValueError: invalid literal for int() with base 10: '1e+06'


On Wed, Nov 1, 2017 at 4:28 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
Hi Dave,

Please find updated patch with suggested changes.


On Wed, Nov 1, 2017 at 8:42 PM, Dave Page <dpage@pgadmin.org> wrote:


On Wed, Nov 1, 2017 at 2:40 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
In my opinion, displaying 2000+ instead of actual value doesn't looks good.

Let say my threshold is set to 5000 and I have 1million rows, displaying 5000+ instead of actual value doesn't looks good.
OR
What we can do is, we can hide the field if it is empty/or less than threshold.

I don't think it would necessarily look bad - after all, the estimated row count will be displayed right above it.
 

Thoughts?


On Wed, Nov 1, 2017 at 7:55 PM, Dave Page <dpage@pgadmin.org> wrote:


On Wed, Nov 1, 2017 at 2:25 PM, Harshal Dhumal <harshal.dhumal@enterprisedb.com> wrote:
Hi Murtuza,

I think for tables having row count more than preference count it should show preference count with plus '+' sign instead empty.
eg. 2000+ (for table with rows more than 2000 and for preference count of 2000.)

That's a nice idea.
 


Inline image 1

 

-- 
Harshal Dhumal
Sr. Software Engineer

EnterpriseDB India: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

On Wed, Nov 1, 2017 at 7:38 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
Hi Dave,

Please find updated patch.

​-- Murtuza​


On Wed, Nov 1, 2017 at 6:50 PM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
Thanks Dave, I'll check the implementation in pgAdmin3 & send new patch with suggested changes.


On Wed, Nov 1, 2017 at 6:41 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi

On Wed, Nov 1, 2017 at 11:58 AM, Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com> wrote:
Hi,

PFA patch to fix the issue where "Rows (estimated)" field was not displaying long number properly.
RM#2386

I have also added the code to count actual rows in a table [ "Rows (counted)" filed ] which was missing.

Oops. Well the idea is good, but unfortunately we want to be careful about when we count the rows, as we could have just clicked on a 10B row table which would take a while. To avoid that, pgAdmin III would only count the rows in the table if the estimated number of rows was below a specific value (see File -> Preferences -> Browser -> Properties -> "Count rows if estimated less than").

I think we need to do the same here - add a preferences option, and only count if estimated is greater than the specified value (the default for which was 2000 in pgAdmin III I believe).

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company




--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company




--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

pgadmin-hackers by date:

Previous
From: Dave Page
Date:
Subject: Re: pgAdmin 4: Russian translation
Next
From: Murtuza Zabuawala
Date:
Subject: Re: [pgAdmin4][Patch]: To handle long numbers for Rows (estimated) field in Table's properties