Обсуждение: [pgadmin-hackers] pgAdmin 4 commit: Cleanup handling of default/null values when dataedi
Cleanup handling of default/null values when data editting. FIxes #2400 Branch ------ master Details ------- https://git.postgresql.org/gitweb?p=pgadmin4.git;a=commitdiff;h=1f26953504a963d2c2223c51f9da29db4d48594b Author: Surinder Kumar <surinder.kumar@enterprisedb.com> Modified Files -------------- .../static/js/slickgrid/slick.pgadmin.editors.js | 58 ++++- web/pgadmin/tools/sqleditor/command.py | 5 + .../sqleditor/templates/sqleditor/js/sqleditor.js | 254 ++++++++++++--------- 3 files changed, 205 insertions(+), 112 deletions(-)
Re: [pgadmin-hackers] pgAdmin 4 commit: Cleanup handling ofdefault/null values when data edi
От
Harshal Dhumal
Дата:
Hi,
This commit has some performance issues with row paste functionality.For 2K copied rows with 3 columns (2 integer and one null column) it took near about 10 seconds to complete paste operation. And entire application becomes unresponsive for those 10 seconds.
Ideally grid should be re-rendered only once after all rows are provided to grid.
_.each(copied_rows, function(row) {The statement
var new_row = arr_to_object(row);
new_row.is_row_copied = true;
row = new_row;
self.temp_new_rows.push(count);
grid.onAddNewRow.notify(
{item: new_row, column: self.columns[0] , grid:grid}
)
grid.setSelectedRows([]);
count++;
});
grid.onAddNewRow.notify(causes grid to re-render (as we listener on onAddNewRow event where we re-render the grid)
{item: new_row, column: self.columns[0] , grid:grid}
)
--
Harshal Dhumal
Sr. Software Engineer
On Sun, May 28, 2017 at 12:21 AM, Dave Page <dpage@pgadmin.org> wrote:
Cleanup handling of default/null values when data editting. FIxes #2400
Branch
------
master
Details
-------
https://git.postgresql.org/gitweb?p=pgadmin4.git;a= commitdiff;h= 1f26953504a963d2c2223c51f9da29 db4d48594b
Author: Surinder Kumar <surinder.kumar@enterprisedb.com>
Modified Files
--------------
.../static/js/slickgrid/slick.pgadmin.editors.js | 58 ++++-
web/pgadmin/tools/sqleditor/command.py | 5 +
.../sqleditor/templates/sqleditor/js/sqleditor.js | 254 ++++++++++++---------
3 files changed, 205 insertions(+), 112 deletions(-)
--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers
On Sun, May 28, 2017 at 1:25 PM, Harshal Dhumal <harshal.dhumal@enterprisedb.com> wrote: > Hi, > > This commit has some performance issues with row paste functionality. > For 2K copied rows with 3 columns (2 integer and one null column) it took > near about 10 seconds to complete paste operation. And entire application > becomes unresponsive for those 10 seconds. > > This is mainly because for each single pasted row entire grid is re-rendered > ( is what I see in code). > Ideally grid should be re-rendered only once after all rows are provided to > grid. > > below code snippet from _paste_rows function > > _.each(copied_rows, function(row) { > var new_row = arr_to_object(row); > new_row.is_row_copied = true; > row = new_row; > self.temp_new_rows.push(count); > grid.onAddNewRow.notify( > {item: new_row, column: self.columns[0] , grid:grid} > ) > grid.setSelectedRows([]); > count++; > }); > > The statement > > grid.onAddNewRow.notify( > {item: new_row, column: self.columns[0] , grid:grid} > ) > > causes grid to re-render (as we listener on onAddNewRow event where we > re-render the grid) Copying that number of rows is an extreme case of course, but still... Is there an alternative way to batch notify? -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Re: [pgadmin-hackers] pgAdmin 4 commit: Cleanup handling ofdefault/null values when data edi
От
Surinder Kumar
Дата:
Hi Dave,
The grid was being re-rendered after add new row and copy/paste to add a blank row in the end of grid, but in case of copy/paste batch operation it should run once, so that code is moved out of addNewRow(...) and put into a function grid.addBlankRow() and called separately for copy/paste after batch operation is completed.
Now copy/paste with 10k records took 2 seconds.
Please find attached patch.
On Mon, May 29, 2017 at 5:19 AM, Dave Page <dpage@pgadmin.org> wrote:
Copying that number of rows is an extreme case of course, but still...On Sun, May 28, 2017 at 1:25 PM, Harshal Dhumal
<harshal.dhumal@enterprisedb.com> wrote:
> Hi,
>
> This commit has some performance issues with row paste functionality.
> For 2K copied rows with 3 columns (2 integer and one null column) it took
> near about 10 seconds to complete paste operation. And entire application
> becomes unresponsive for those 10 seconds.
>
> This is mainly because for each single pasted row entire grid is re-rendered
> ( is what I see in code).
> Ideally grid should be re-rendered only once after all rows are provided to
> grid.
>
> below code snippet from _paste_rows function
>
> _.each(copied_rows, function(row) {
> var new_row = arr_to_object(row);
> new_row.is_row_copied = true;
> row = new_row;
> self.temp_new_rows.push(count);
> grid.onAddNewRow.notify(
> {item: new_row, column: self.columns[0] , grid:grid}
> )
> grid.setSelectedRows([]);
> count++;
> });
>
> The statement
>
> grid.onAddNewRow.notify(
> {item: new_row, column: self.columns[0] , grid:grid}
> )
>
> causes grid to re-render (as we listener on onAddNewRow event where we
> re-render the grid)
Is there an alternative way to batch notify?
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Вложения
Thanks, applied. On Mon, May 29, 2017 at 7:08 AM, Surinder Kumar <surinder.kumar@enterprisedb.com> wrote: > Hi Dave, > > The grid was being re-rendered after add new row and copy/paste to add a > blank row in the end of grid, but in case of copy/paste batch operation it > should run once, so that code is moved out of addNewRow(...) and put into a > function grid.addBlankRow() and called separately for copy/paste after batch > operation is completed. > > Now copy/paste with 10k records took 2 seconds. > > Please find attached patch. > > > On Mon, May 29, 2017 at 5:19 AM, Dave Page <dpage@pgadmin.org> wrote: >> >> On Sun, May 28, 2017 at 1:25 PM, Harshal Dhumal >> <harshal.dhumal@enterprisedb.com> wrote: >> > Hi, >> > >> > This commit has some performance issues with row paste functionality. >> > For 2K copied rows with 3 columns (2 integer and one null column) it >> > took >> > near about 10 seconds to complete paste operation. And entire >> > application >> > becomes unresponsive for those 10 seconds. >> > >> > This is mainly because for each single pasted row entire grid is >> > re-rendered >> > ( is what I see in code). >> > Ideally grid should be re-rendered only once after all rows are provided >> > to >> > grid. >> > >> > below code snippet from _paste_rows function >> > >> > _.each(copied_rows, function(row) { >> > var new_row = arr_to_object(row); >> > new_row.is_row_copied = true; >> > row = new_row; >> > self.temp_new_rows.push(count); >> > grid.onAddNewRow.notify( >> > {item: new_row, column: self.columns[0] , grid:grid} >> > ) >> > grid.setSelectedRows([]); >> > count++; >> > }); >> > >> > The statement >> > >> > grid.onAddNewRow.notify( >> > {item: new_row, column: self.columns[0] , grid:grid} >> > ) >> > >> > causes grid to re-render (as we listener on onAddNewRow event where we >> > re-render the grid) >> >> Copying that number of rows is an extreme case of course, but still... >> Is there an alternative way to batch notify? >> >> -- >> 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