Re: [pgAdmin4][Patch][RM2257]: Query tool - Insert row doesn't use default values

From: Dave Page <dpage(at)pgadmin(dot)org>
To: Surinder Kumar <surinder(dot)kumar(at)enterprisedb(dot)com>
Cc: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: [pgAdmin4][Patch][RM2257]: Query tool - Insert row doesn't use default values
Date: 2017-05-09 10:29:20
Message-ID: CA+OCxowq-52VR5hTgBTGa3zGi6NVkAmM2AoGDLW2_wm_QdL0hA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

On Tue, May 9, 2017 at 11:03 AM, Surinder Kumar <
surinder(dot)kumar(at)enterprisedb(dot)com> wrote:

> Hi Dave,
>
> On Mon, May 8, 2017 at 4:37 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>
>>
>>
>> On Mon, May 8, 2017 at 11:51 AM, Surinder Kumar <
>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>
>>> Hi
>>>
>>> On Mon, May 8, 2017 at 3:51 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>
>>>> Hi
>>>>
>>>> On Mon, May 8, 2017 at 11:13 AM, Surinder Kumar <
>>>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>
>>>>> Hi Dave,
>>>>>
>>>>> On Mon, May 8, 2017 at 3:28 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>>>
>>>>>> Hi
>>>>>>
>>>>>> On Fri, May 5, 2017 at 12:52 PM, Surinder Kumar <
>>>>>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>>>
>>>>>>> Hi Dave,
>>>>>>>
>>>>>>> The support to handle [null] and [default] values is added for
>>>>>>> following formatters:
>>>>>>> - JsonFormatter
>>>>>>> - NumbersFormatter
>>>>>>> - CheckmarkFormatter
>>>>>>> - TextFormatter
>>>>>>>
>>>>>>> Previously when a new row is added, it was not validating each and
>>>>>>> every cell for columns with attribute not_null = true.
>>>>>>> Introduced a new function validateRow(...) which is called on
>>>>>>> adding a new row, it validates each cell with column having
>>>>>>> attribute(not_null=true). the corresponding cell will highlighted and save
>>>>>>> button will be disabled if value is [null].
>>>>>>>
>>>>>>
>>>>>> I'm not sure that behaviour is right. What I now see (given the table
>>>>>> below) is that:
>>>>>>
>>>>>> - If I click in the id field of a new row, it forces me to enter a
>>>>>> value or hit escape. Why is it trying to force me? It's a serial field, so
>>>>>> will get a value on save anyway.
>>>>>>
>>>>> ​Yes, It is because I am validating all cell values after it renders.
>>>>> It will reverted back.
>>>>>
>>>>>>
>>>>>> - If I do enter a value in the ID field, focus jumps over all the
>>>>>> other fields with either a default or no 'not null' option to the
>>>>>> data_no_nulls column. Focus should always go to the next field.
>>>>>>
>>>>>> I think this addition can just be removed - I'm pretty sure the
>>>>>> previous behaviour would have been what we want, with the additional
>>>>>> formatters fixed.
>>>>>>
>>>>> ​But If i remove this addition, the value for column like
>>>>> 'data_no_nulls' ​will be set to '' (blank string), then on save its value
>>>>> will be validated on the server side and whatever the error message is will
>>>>> be returned back (the same behaviour as in pgAdmin3)
>>>>>
>>>>
>>>> Which is fine I think. If you want to leave the validation there,
>>>> that's also fine - but, it a) shouldn't require me to press Esc if I decide
>>>> not to fill in that value yet, and b) shouldn't change the tab order of the
>>>> fields. It's also broken of course, in that it was trying to force me to
>>>> enter a value for a not-null field with a default.
>>>>
>>> ​Yes, I will check if we just highlight the field and don't force the
>>> user to ​enter value.
>>> This will enable user to edit any field using TAB key even if required
>>> field is highlighted red.
>>> Should the save button remains disable untill user enters any valid
>>> value in 'data_no_nulls' column ?
>>>
>>
>> I think that's fine, yes - as long as we get the validation right :-)
>>
> ​For highlighting the error field and enable user to navigate to other
> cells using TAB key,
> I spend some time looking and debugging into the code and found that it
> requires lot of changes in slick.grid.js core functions as there are no
> event listeners provided to ​listen and changes in core file is not
> preferred. It may also break other functionalities as code is quite complex.
> So, I think we should validate data on server side and display any error
> messages on UI.
>

OK.

>
>>>>
>>>
>>>>>>
>>>>>>>
>>>>>>> Now I will add more feature test cases for remaining formatters.
>>>>>>> Will send separate patch for feature test cases once completed.
>>>>>>>
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Please review updated patch.
>>>>>>>
>>>>>>>
>>>>>>> On Tue, May 2, 2017 at 5:57 PM, Surinder Kumar <
>>>>>>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>>>>
>>>>>>>> Hi Dave,
>>>>>>>>
>>>>>>>> On Tue, May 2, 2017 at 5:21 PM, Dave Page <dpage(at)pgadmin(dot)org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> This is looking much better now :-). Couple of thoughts and a bug:
>>>>>>>>>
>>>>>>>>> - Only the TextFormatter seems to handle both [null] and [default]
>>>>>>>>> values. Shouldn't all formatters do so (including Json and Checkmark)?
>>>>>>>>>
>>>>>>>> ​Yes, I will apply the same changes for other formatters too.​
>>>>>>>>
>>>>>>>>> For example, "serial" columns currently get displayed as [null]
>>>>>>>>> when left blank, but I would expect to see [default].
>>>>>>>>>
>>>>>>>>> - I would suggest we put [null] and [default] in a lighter colour
>>>>>>>>> - #999999.
>>>>>>>>>
>>>>>>>>> - With the feature test patch added, I seem to be consistently
>>>>>>>>> getting the following failure (immediately after your new tests run):
>>>>>>>>>
>>>>>>>>> ============================================================
>>>>>>>>> ==========
>>>>>>>>> ERROR: runTest (pgadmin.feature_tests.xss_che
>>>>>>>>> cks_panels_and_query_tool_test.CheckForXssFeatureTest)
>>>>>>>>> Test XSS check for panels and query tool
>>>>>>>>> ------------------------------------------------------------
>>>>>>>>> ----------
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web
>>>>>>>>> /regression/feature_utils/base_feature_test.py", line 42, in setUp
>>>>>>>>> self._screenshot()
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web
>>>>>>>>> /regression/feature_utils/base_feature_test.py", line 92, in
>>>>>>>>> _screenshot
>>>>>>>>> python_version))
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
>>>>>>>>> line 802, in get_screenshot_as_file
>>>>>>>>> png = self.get_screenshot_as_png()
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
>>>>>>>>> line 821, in get_screenshot_as_png
>>>>>>>>> return base64.b64decode(self.get_scre
>>>>>>>>> enshot_as_base64().encode('ascii'))
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
>>>>>>>>> line 831, in get_screenshot_as_base64
>>>>>>>>> return self.execute(Command.SCREENSHOT)['value']
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
>>>>>>>>> line 238, in execute
>>>>>>>>> self.error_handler.check_response(response)
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py",
>>>>>>>>> line 193, in check_response
>>>>>>>>> raise exception_class(message, screen, stacktrace)
>>>>>>>>> UnexpectedAlertPresentException: Alert Text: None
>>>>>>>>> Message: unexpected alert open: {Alert text : Are you sure you
>>>>>>>>> wish to close the pgAdmin 4 browser?}
>>>>>>>>> (Session info: chrome=58.0.3029.81)
>>>>>>>>> (Driver info: chromedriver=2.29.461585
>>>>>>>>> (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X
>>>>>>>>> 10.12.3 x86_64)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ============================================================
>>>>>>>>> ==========
>>>>>>>>> ERROR: runTest (pgadmin.feature_tests.xss_che
>>>>>>>>> cks_pgadmin_debugger_test.CheckDebuggerForXssFeatureTest)
>>>>>>>>> Test table DDL generation
>>>>>>>>> ------------------------------------------------------------
>>>>>>>>> ----------
>>>>>>>>> Traceback (most recent call last):
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web
>>>>>>>>> /regression/feature_utils/base_feature_test.py", line 42, in setUp
>>>>>>>>> self._screenshot()
>>>>>>>>> File "/Users/dpage/git/pgadmin4/web
>>>>>>>>> /regression/feature_utils/base_feature_test.py", line 92, in
>>>>>>>>> _screenshot
>>>>>>>>> python_version))
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
>>>>>>>>> line 802, in get_screenshot_as_file
>>>>>>>>> png = self.get_screenshot_as_png()
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
>>>>>>>>> line 821, in get_screenshot_as_png
>>>>>>>>> return base64.b64decode(self.get_scre
>>>>>>>>> enshot_as_base64().encode('ascii'))
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
>>>>>>>>> line 831, in get_screenshot_as_base64
>>>>>>>>> return self.execute(Command.SCREENSHOT)['value']
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py",
>>>>>>>>> line 238, in execute
>>>>>>>>> self.error_handler.check_response(response)
>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>> dmin4/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py",
>>>>>>>>> line 193, in check_response
>>>>>>>>> raise exception_class(message, screen, stacktrace)
>>>>>>>>> UnexpectedAlertPresentException: Alert Text: None
>>>>>>>>> Message: unexpected alert open: {Alert text : Are you sure you
>>>>>>>>> wish to close the pgAdmin 4 browser?}
>>>>>>>>> (Session info: chrome=58.0.3029.81)
>>>>>>>>> (Driver info: chromedriver=2.29.461585
>>>>>>>>> (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X
>>>>>>>>> 10.12.3 x86_64)
>>>>>>>>>
>>>>>>>> ​Sure. I will fix this.​
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, Apr 28, 2017 at 10:19 AM, Surinder Kumar <
>>>>>>>>> surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Dave,
>>>>>>>>>>
>>>>>>>>>> Please find updated patch for RM case and a separate patch for
>>>>>>>>>> Feature tests.
>>>>>>>>>>
>>>>>>>>>> *Python:*
>>>>>>>>>>
>>>>>>>>>> - Added [default] label for cells with default values while
>>>>>>>>>> inserting a new row.
>>>>>>>>>>
>>>>>>>>>> - Introduced a FieldValidator function for cells that don't allow
>>>>>>>>>> null values. If user tries to insert null value, field with be highlighted
>>>>>>>>>> with red borders around.
>>>>>>>>>>
>>>>>>>>>> ​-
>>>>>>>>>> If a cell contains blank string('') and when we set it to null,
>>>>>>>>>> the change into the cell is not detected. It was because the comparison
>>>>>>>>>> for (defaultValue == null) return true if defaultValue is
>>>>>>>>>> undefined. Hence _.isNull(value) is used to fix this.
>>>>>>>>>>
>>>>>>>>>> *Feature Test cases:*
>>>>>>>>>>
>>>>>>>>>> - Introduced a new method create_table_with_query(server,
>>>>>>>>>> db_name, query) in test_utils.py which executes the given query
>>>>>>>>>> on connected server.
>>>>>>>>>>
>>>>>>>>>> - Added a new file test_data.json that has test data for test
>>>>>>>>>> cases.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Apr 7, 2017 at 2:21 PM, Dave Page <dpage(at)pgadmin(dot)org>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi
>>>>>>>>>>>
>>>>>>>>>>> On Sat, Apr 1, 2017 at 12:45 PM, Surinder Kumar
>>>>>>>>>>> <surinder(dot)kumar(at)enterprisedb(dot)com> wrote:
>>>>>>>>>>> > Hi
>>>>>>>>>>> >
>>>>>>>>>>> > Issues fixed:
>>>>>>>>>>> >
>>>>>>>>>>> > 1. If a column is defined with a default modifier, there is
>>>>>>>>>>> now way to
>>>>>>>>>>> > insert the row with those defaults.
>>>>>>>>>>> > The column will be left blank and it will take default value
>>>>>>>>>>> automatically.
>>>>>>>>>>> >
>>>>>>>>>>> > 2. If a column has a not-null constraint then an error is
>>>>>>>>>>> returned and the
>>>>>>>>>>> > row is not inserted.
>>>>>>>>>>> > The column will be left blank
>>>>>>>>>>> >
>>>>>>>>>>> > The default values for new added rows will be displayed on
>>>>>>>>>>> refresh/execute.
>>>>>>>>>>> >
>>>>>>>>>>> > Please find attached patch and review.
>>>>>>>>>>>
>>>>>>>>>>> This largely works as expected, but there is some weirdness. I
>>>>>>>>>>> have a
>>>>>>>>>>> test table that looks like this:
>>>>>>>>>>>
>>>>>>>>>>> CREATE TABLE public.defaults
>>>>>>>>>>> (
>>>>>>>>>>> id bigint NOT NULL DEFAULT nextval('defaults_id_seq'::reg
>>>>>>>>>>> class),
>>>>>>>>>>> data_default_nulls text COLLATE pg_catalog."default" DEFAULT
>>>>>>>>>>> 'abc123'::text,
>>>>>>>>>>> data_default_no_nulls text COLLATE pg_catalog."default" NOT
>>>>>>>>>>> NULL
>>>>>>>>>>> DEFAULT 'def456'::text,
>>>>>>>>>>> data_nulls text COLLATE pg_catalog."default",
>>>>>>>>>>> data_no_nulls text COLLATE pg_catalog."default" NOT NULL,
>>>>>>>>>>> CONSTRAINT defaults_pkey PRIMARY KEY (id)
>>>>>>>>>>> )
>>>>>>>>>>>
>>>>>>>>>>> Remember that the expected behaviour is:
>>>>>>>>>>>
>>>>>>>>>>> - Set a value to empty to update the column to null.
>>>>>>>>>>> - Set a value to '' to update the column to an empty string
>>>>>>>>>>> - Set a value to anything else to update the column to that value
>>>>>>>>>>>
>>>>>>>>>>> 1) In a row with values in each column, if I try to set the
>>>>>>>>>>> value of
>>>>>>>>>>> data_default_nulls to null, the query executed is:
>>>>>>>>>>>
>>>>>>>>>>> UPDATE public.defaults SET
>>>>>>>>>>> data_default_nulls = '' WHERE
>>>>>>>>>>> id = '2';
>>>>>>>>>>>
>>>>>>>>>>> 2) If I do the same in the data_nulls column, the value is
>>>>>>>>>>> immediately
>>>>>>>>>>> shown as [null] and the query executed is:
>>>>>>>>>>>
>>>>>>>>>>> UPDATE public.defaults SET
>>>>>>>>>>> data_nulls = NULL WHERE
>>>>>>>>>>> id = '2';
>>>>>>>>>>>
>>>>>>>>>>> 3) If I then edit the value in data_default_nulls, it shows the
>>>>>>>>>>> current value as ''. Removing the quotes (to set it to null)
>>>>>>>>>>> doesn't
>>>>>>>>>>> get detected as a change.
>>>>>>>>>>>
>>>>>>>>>> ​​Taken care.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 4) When I manually executed "update defaults set
>>>>>>>>>>> data_default_nulls =
>>>>>>>>>>> null where id = 2" in a query tool window, I got:
>>>>>>>>>>>
>>>>>>>>>>> 2017-04-07 09:43:02,987: INFO werkzeug: 127.0.0.1 - -
>>>>>>>>>>> [07/Apr/2017
>>>>>>>>>>> 09:43:02] "GET /sqleditor/columns/8745675 HTTP/1.1" 500 -
>>>>>>>>>>> Traceback (most recent call last):
>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>>>> dmin4/lib/python2.7/site-packages/flask/app.py",
>>>>>>>>>>> line 2000, in __call__
>>>>>>>>>>> return self.wsgi_app(environ, start_response)
>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>>>> dmin4/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/pga
>>>>>>>>>>> dmin4/lib/python2.7/site-packages/flask/app.py",
>>>>>>>>>>> line 1567, in handle_exception
>>>>>>>>>>> reraise(exc_type, exc_value, tb)
>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>>>> dmin4/lib/python2.7/site-packages/flask/app.py",
>>>>>>>>>>> line 1988, in wsgi_app
>>>>>>>>>>> response = self.full_dispatch_request()
>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>>>> dmin4/lib/python2.7/site-packages/flask/app.py",
>>>>>>>>>>> line 1641, in full_dispatch_request
>>>>>>>>>>> rv = self.handle_user_exception(e)
>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>>>> dmin4/lib/python2.7/site-packages/flask/app.py",
>>>>>>>>>>> line 1544, in handle_user_exception
>>>>>>>>>>> reraise(exc_type, exc_value, tb)
>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>>>> dmin4/lib/python2.7/site-packages/flask/app.py",
>>>>>>>>>>> line 1639, in full_dispatch_request
>>>>>>>>>>> rv = self.dispatch_request()
>>>>>>>>>>> File "/Users/dpage/.virtualenvs/pga
>>>>>>>>>>> dmin4/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/pga
>>>>>>>>>>> dmin4/lib/python2.7/site-packages/flask_login.py",
>>>>>>>>>>> line 792, in decorated_view
>>>>>>>>>>> return func(*args, **kwargs)
>>>>>>>>>>> File "/Users/dpage/git/pgadmin4/web
>>>>>>>>>>> /pgadmin/tools/sqleditor/__init__.py",
>>>>>>>>>>> line 452, in get_columns
>>>>>>>>>>> tid=command_obj.obj_id)
>>>>>>>>>>> AttributeError: 'QueryToolCommand' object has no attribute
>>>>>>>>>>> 'obj_id'
>>>>>>>>>>>
>>>>>>>>>> ​Fixed.​
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 5) When I run the query again in pgAdmin III, then refresh the
>>>>>>>>>>> data in
>>>>>>>>>>> pgAdmin 4, the data_default_nulls column is displayed without the
>>>>>>>>>>> [null] marker (despite having a null value, which I confirmed in
>>>>>>>>>>> pgAdmin 3).
>>>>>>>>>>>
>>>>>>>>>> ​Fixed.​
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I'm sure there are other combinations of issues here. Please fix
>>>>>>>>>>> and
>>>>>>>>>>> thoroughly re-test to ensure behaviour is consistent - and to
>>>>>>>>>>> avoid
>>>>>>>>>>> future issues, please add some appropriate feature tests to check
>>>>>>>>>>> nulls, defaults and empty strings are properly handled in view,
>>>>>>>>>>> insert
>>>>>>>>>>> and updates. Murtuza recently wrote some feature tests for the
>>>>>>>>>>> query
>>>>>>>>>>> tool - you should be able to use those as a starting point.
>>>>>>>>>>>
>>>>>>>>>> ​Added feature tests​
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> 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
>>>>
>>>
>>>
>>
>>
>> --
>> 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

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Dave Page 2017-05-09 11:06:53 pgAdmin 4 commit: Support loading files with Unicode BOMs. Fixes #2369
Previous Message Surinder Kumar 2017-05-09 10:03:14 Re: [pgAdmin4][Patch][RM2257]: Query tool - Insert row doesn't use default values