Hi Dave Please find update Feature test cases patch.
On Sun, May 28, 2017 at 12:40 AM, Dave Page <dp...@pgadmin.org> wrote: > Thanks - I committed the code changes, as they seem to work very well. > The regression tests are failing for me though :-(. Can you take > another look please? Note that I'm running under Python 2.7 on Mal > Actually i used the generic close_query_tool method to close view data panel which popup with unsaved changes. but in my case nothing popups as there as no unsaved changes, so clicking on [x] button close the panel. So I write close_data_grid method in pgadmin_page.py file. > > ====================================================================== > ERROR: runTest (pgadmin.feature_tests.view_da > ta_dml_queries.CheckForViewDataTest) > Validate Insert, Update operations in View data with given test data > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/view_da > ta_dml_queries.py", > line 106, in runTest > self.page.close_query_tool() > File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgad > min_page.py", > line 68, in close_query_tool > self.driver.switch_to.frame(self.driver.find_elements_by_tag > _name("iframe")[0]) > IndexError: list index out of range > > On Sat, May 27, 2017 at 9:11 AM, Surinder Kumar > <surinder.ku...@enterprisedb.com> wrote: > > Hi Dave > > > > Please find updated Feature test case and review. > > > > This patch is dependent on RM_2400v2.patch > > > > On Fri, May 26, 2017 at 8:45 PM, Surinder Kumar > > <surinder.ku...@enterprisedb.com> wrote: > >> > >> Hi Joao, > >> > >> On May 26, 2017 8:33 PM, "Joao Pedro De Almeida Pereira" > >> <jdealmeidapere...@pivotal.io> wrote: > >> > > >> > Hi Surinder, > >> > You are right, nevertheless that was not the only error we had on the > >> > flaky tests. > >> Okay, please send stack trace where test case fails.. > >> > >> Thanks > >> Surinder > >> > >> > >> > > >> > Thanks > >> > Joao & Shruti > >> > > >> > On Fri, May 26, 2017 at 10:18 AM, Surinder Kumar > >> > <surinder.ku...@enterprisedb.com> wrote: > >> >> > >> >> Hi Joao, > >> >> > >> >> Please apply patch RM_2400v2.patch first then apply Feature test > cases > >> >> patch. > >> >> > >> >> > >> >> On May 26, 2017 7:42 PM, "Joao Pedro De Almeida Pereira" > >> >> <jdealmeidapere...@pivotal.io> wrote: > >> >>> > >> >>> Hello Surinder, > >> >>> > >> >>> Thanks for updating the patch. After looking into the updated > version, > >> >>> we found the following issues. > >> >>> > >> >>> > >> >>> The tests looked flaky. We ran the tests three times and each time > we > >> >>> had timeout issues. > >> >>> It failed twice in the location mentioned below. It also failed > >> >>> because the row1 cell2 values was [null] instead of the expected > [default]. > >> >>> > >> >>> Traceback (most recent call last): File > >> >>> "/Users/pivotal/workspace/pgadmin4/web/pgadmin/feature_tests > /view_data_dml_queries.py", > >> >>> line 105, in runTest self._copy_paste_row() File > >> >>> "/Users/pivotal/workspace/pgadmin4/web/pgadmin/feature_tests > /view_data_dml_queries.py", > >> >>> line 248, in _copy_paste_row self._compare_cell_value(row1_ > cell2_xpath, > >> >>> "[default]") File > >> >>> "/Users/pivotal/workspace/pgadmin4/web/pgadmin/feature_tests > /view_data_dml_queries.py", > >> >>> line 147, in _compare_cell_value CheckForViewDataTest.TIMEOUT_STRING > File > >> >>> "/Users/pivotal/.pyenv/versions/pgadmin/lib/python2.7/site-p > ackages/selenium/webdriver/support/wait.py", > >> >>> line 80, in until raise TimeoutException(message, screen, > stacktrace) > >> >>> TimeoutException: Message: Timed out waiting for div element to > appear > >> >>> > >> >>> > >> >>> > >> >>> We also noticed that the function _wait is no longer used. Maybe we > >> >>> can remove it. > > > > Removed. > >> > >> >>> > >> >>> Thanks > >> >>> Joao & Shruti > >> >>> > >> >>> On Fri, May 26, 2017 at 9:07 AM, Surinder Kumar > >> >>> <surinder.ku...@enterprisedb.com> wrote: > >> >>>> > >> >>>> Hi > >> >>>> > >> >>>> Please find updated patch. > >> >>>> > >> >>>> On Fri, May 26, 2017 at 3:15 AM, Joao Pedro De Almeida Pereira > >> >>>> <jdealmeidapere...@pivotal.io> wrote: > >> >>>>> > >> >>>>> Hello Surinder, > >> >>>>> > >> >>>>> We are having issues running the tests, this is the error that we > >> >>>>> are getting: > >> >>>>> > >> >>>>> File > >> >>>>> "/Users/pivotal/workspace/pgadmin4/web/regression/python_tes > t_utils/test_utils.py", > >> >>>>> line 196, in create_table_with_query pg_cursor.execute(query) > >> >>>>> ProgrammingError: role "postgres" does not exist Traceback (most > recent call > >> >>>>> last): File > >> >>>>> "/Users/pivotal/workspace/pgadmin4/web/regression/python_tes > t_utils/test_utils.py", > >> >>>>> line 196, in create_table_with_query pg_cursor.execute(query) > >> >>>>> ProgrammingError: relation "defaults_id_seq" does not exist > >> >>>>> > >> >>>>> > >> >>>>> Fixed. > >> >>>>> > >> >>>>> There is already a function that waits for an element to be > >> >>>>> displayed on the screen. The function is: self.page.find_by_xpath > >> >>>>> > >> >>>>> In line 179 and 180, both functions do the same thing, why do we > >> >>>>> need to wait first and then wait again. Were you experiencing > flakiness? > >> >>>> > >> >>>> I have to use another instance of webDriverWait because I was > getting > >> >>>> TimeoutException. I guess timeout of 10 seconds wasn't enough to > search the > >> >>>> element in DOM. > >> >>>>> > >> >>>>> > >> >>>>> Does _check_xss_in_view_data method checks for Cross Site > Scripting? > >> >>>> > >> >>>> I forgot to change the method name. > >> >>>>> > >> >>>>> > >> >>>>> Was there any reason to duplicate self.page._connects_to_server > and > >> >>>>> self.page._close_query_tool? > >> >>>> > >> >>>> Fixed. > >> >>>> > >> >>>> I got following exception when I used > "self.page._close_query_tool": > >> >>>>> > >> >>>>> Traceback (most recent call last): > >> >>>>> File > >> >>>>> "/Users/surinder/Documents/Projects/pgadmin4/web/pgadmin/fea > ture_tests/view_data_dml_queries.py", > >> >>>>> line 125, in runTest > >> >>>>> self.page.close_query_tool() > >> >>>>> File > >> >>>>> "/Users/surinder/Documents/Projects/pgadmin4/web/regression/ > feature_utils/pgadmin_page.py", > >> >>>>> line 66, in close_query_tool > >> >>>>> > >> >>>>> self.driver.switch_to.frame(self.driver.find_elements_by_tag > _name("iframe")[0]) > >> >>>>> File > >> >>>>> "/Users/surinder/Documents/Workspaces/PEM_35/lib/python3.5/s > ite-packages/selenium/webdriver/remote/switch_to.py", > >> >>>>> line 87, in frame > >> >>>>> self._driver.execute(Command.SWITCH_TO_FRAME, {'id': > >> >>>>> frame_reference}) > >> >>>>> File > >> >>>>> "/Users/surinder/Documents/Workspaces/PEM_35/lib/python3.5/s > ite-packages/selenium/webdriver/remote/webdriver.py", > >> >>>>> line 238, in execute > >> >>>>> self.error_handler.check_response(response) > >> >>>>> File > >> >>>>> "/Users/surinder/Documents/Workspaces/PEM_35/lib/python3.5/s > ite-packages/selenium/webdriver/remote/errorhandler.py", > >> >>>>> line 193, in check_response > >> >>>>> raise exception_class(message, screen, stacktrace) > >> >>>>> selenium.common.exceptions.WebDriverException: Message: unknown > >> >>>>> error: Runtime.evaluate threw exception: Error: element is not > attached to > >> >>>>> the page document > >> >>>>> at Cache.retrieveItem (<anonymous>:173:17) > >> >>>>> at unwrap (<anonymous>:293:20) > >> >>>>> at unwrap (<anonymous>:297:19) > >> >>>>> at callFunction (<anonymous>:343:29) > >> >>>>> at apply.ELEMENT (<anonymous>:357:23) > >> >>>>> at <anonymous>:358:3 > >> >>>>> (Session info: chrome=58.0.3029.110) > >> >>>>> (Driver info: chromedriver=2.29.461585 > >> >>>>> (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X > 10.10.2 x86_64) > >> >>>> > >> >>>> > >> >>>> I replaced this method with the one I was using in the test file > and > >> >>>> It is working for every test case. > >> >>>>> > >> >>>>> > >> >>>>> The method _verify_insert_data looks more or less the same code as > >> >>>>> in the end of _copy_paste_row, should this be merged? > >> >>>> > >> >>>> Yes, I have merged. > >> >>>> > >> >>>> Thanks > >> >>>>> > >> >>>>> > >> >>>>> Thanks, > >> >>>>> Joao & Shruti > >> >>>>> > >> >>>>> > >> >>>>> On Thu, May 25, 2017 at 4:41 PM, Dave Page <dp...@pgadmin.org> > >> >>>>> wrote: > >> >>>>>> > >> >>>>>> Hi > >> >>>>>> > >> >>>>>> The tests failed on both PG 9.4 and 9.6 for me :-( > >> >>>>>> > >> >>>>>> > >> >>>>>> ============================================================ > ========== > >> >>>>>> ERROR: runTest > >> >>>>>> (pgadmin.feature_tests.view_data_dml_queries.CheckForViewDat > aTest) > >> >>>>>> Validate Insert, Update operations in View data with given test > >> >>>>>> data > >> >>>>>> > >> >>>>>> ------------------------------------------------------------ > ---------- > >> >>>>>> Traceback (most recent call last): > >> >>>>>> File > >> >>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/view_da > ta_dml_queries.py", > >> >>>>>> line 120, in runTest > >> >>>>>> self._verify_insert_data() > >> >>>>>> File > >> >>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/view_da > ta_dml_queries.py", > >> >>>>>> line 316, in _verify_insert_data > >> >>>>>> self._compare_cell_value(cell_xpath, > config_data[str(idx)][1]) > >> >>>>>> File > >> >>>>>> "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/view_da > ta_dml_queries.py", > >> >>>>>> line 165, in _compare_cell_value > >> >>>>>> "Timed out waiting for element to appear" > >> >>>>>> File > >> >>>>>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa > ges/selenium/webdriver/support/wait.py", > >> >>>>>> line 80, in until > >> >>>>>> raise TimeoutException(message, screen, stacktrace) > >> >>>>>> TimeoutException: Message: Timed out waiting for element to > appear > >> >>>> > >> >>>> I increases the timeout of webDriverWait from "0.3" to "0.8". It > >> >>>> should fix this issue. > >> >>>>>> > >> >>>>>> > >> >>>>>> Also, Can we replace the sleep with a "wait for object" or > similar? > >> >>>> > >> >>>> I have removed sleep. > >> >>>>>> > >> >>>>>> > >> >>>>>> On Thu, May 25, 2017 at 6:42 AM, Surinder Kumar > >> >>>>>> <surinder.ku...@enterprisedb.com> wrote: > >> >>>>>> > Hi > >> >>>>>> > > >> >>>>>> > Please find attached patch for Feature test cases. > >> >>>>>> > > >> >>>>>> > The approach is to create a single table 'defaults' with > columns > >> >>>>>> > of various > >> >>>>>> > types(number, text, json and boolean) and write test cases for > >> >>>>>> > these cell > >> >>>>>> > types with different input values. > >> >>>>>> > > >> >>>>>> > Following are the test cases covered: > >> >>>>>> > > >> >>>>>> > 1) Add a new row, save and compare the resulted value with > >> >>>>>> > expected values > >> >>>>>> > > >> >>>>>> > 2) Copy/Paste row, save and compare cell data > >> >>>>>> > > >> >>>>>> > a) Clear cell value and escape, the cell must set to > >> >>>>>> > [default] > >> >>>>>> > > >> >>>>>> > 3) Update cell: > >> >>>>>> > > >> >>>>>> > a) Insert two single quotes(''), expected value is blank > >> >>>>>> > string > >> >>>>>> > > >> >>>>>> > b) Clear a cell, expected value is [null] > >> >>>>>> > > >> >>>>>> > c) Insert a string \’\’, expected value is '' > >> >>>>>> > > >> >>>>>> > d) Insert a string \\’\\’, expected value is \’\’ > >> >>>>>> > > >> >>>>>> > e) Insert a string \\\\’\\\\’, expected value is \\’\\’ > >> >>>>>> > > >> >>>>>> > f) If a checkbox cell is double clicked, return value must > be > >> >>>>>> > 'true' > >> >>>>>> > > >> >>>>>> > > >> >>>>>> > Thanks > >> >>>>>> > Surinder Kumar > >> >>>>>> > > >> >>>>>> > > >> >>>>>> > > >> >>>>>> > > >> >>>>>> > > >> >>>>>> > > >> >>>>>> > On Fri, May 19, 2017 at 6:08 PM, Surinder Kumar > >> >>>>>> > <surinder.ku...@enterprisedb.com> wrote: > >> >>>>>> >> > >> >>>>>> >> Hi > >> >>>>>> >> > >> >>>>>> >> Please find updated patch and review. > >> >>>>>> >> > >> >>>>>> >> On Thu, May 18, 2017 at 7:36 PM, Joao Pedro De Almeida Pereira > >> >>>>>> >> <jdealmeidapere...@pivotal.io> wrote: > >> >>>>>> >>> > >> >>>>>> >>> Hello Hackers, > >> >>>>>> >>> > >> >>>>>> >>> We reviewed the PR, and there are a lot of new lines of code > in > >> >>>>>> >>> this > >> >>>>>> >>> patch, are we sure that we can have a good coverage of the > >> >>>>>> >>> functionality > >> >>>>>> >>> just by doing feature tests? > >> >>>>>> >>> Adding more code to a 3.5k+ lines file doesn't look like a > good > >> >>>>>> >>> option, > >> >>>>>> >>> do you think it is possible to extract some of the > >> >>>>>> >>> functionality to their > >> >>>>>> >>> own files and have test around those functionalities? > >> >>>>>> >> > >> >>>>>> >> To improve the code readability, reduce code complexity and to > >> >>>>>> >> make code > >> >>>>>> >> testable, the code must be splitted component wise. > >> >>>>>> >> Here is my suggestion: > >> >>>>>> >> > >> >>>>>> >> 1. The code for classes like “SQLEditorView” and > >> >>>>>> >> “SqlEditorController” can > >> >>>>>> >> be moved into two files like "editor_view.js and > >> >>>>>> >> “editor_controller.js" and > >> >>>>>> >> called from within "sqleditor.js". > >> >>>>>> >> > >> >>>>>> >> 2. All utilities functions can be moved into separate utils > file > >> >>>>>> >> and can > >> >>>>>> >> write test cases. > >> >>>>>> >> > >> >>>>>> >> 3. Slickgrid listener functions such as: > >> >>>>>> >> onBeforeEditCell, onKeyDown, > >> >>>>>> >> onCellChange, onAddNewRow > >> >>>>>> >> > >> >>>>>> >> can be moved into > >> >>>>>> >> a file and write test cases around. > >> >>>>>> >> > >> >>>>>> >> This needs discussion. Any suggestion? > >> >>>>>> >>> > >> >>>>>> >>> > >> >>>>>> >>> Do we really need to have an epicRandomString function in our > >> >>>>>> >>> code? Would > >> >>>>>> >>> it be better to use a library that would provide us that > >> >>>>>> >>> functionality out > >> >>>>>> >>> of the box? > >> >>>>>> >> > >> >>>>>> >> We are using "epicRandomString function" to uniquely identify > >> >>>>>> >> each record, > >> >>>>>> >> I talked to Harshal who is eliminating the use of this > function > >> >>>>>> >> and instead > >> >>>>>> >> maintaining counter for the rows added/updated/deleted. > >> >>>>>> >>> > >> >>>>>> >>> The functions this.applyValue in slick.pgadmin.editors.js > that > >> >>>>>> >>> were > >> >>>>>> >>> change in this patch are exactly the same, can we extract > that > >> >>>>>> >>> code into a > >> >>>>>> >>> single function instead of repeating the code? > >> >>>>>> >> > >> >>>>>> >> I have moved common logic into a new function. > >> >>>>>> >>> > >> >>>>>> >>> > >> >>>>>> >>> Using feature tests is a good option to ensure that the > >> >>>>>> >>> integration of > >> >>>>>> >>> all the components of the application is working as expected, > >> >>>>>> >>> but in order > >> >>>>>> >>> to tests behaviors that are edge cases the Unit Tests are > much > >> >>>>>> >>> cheaper to > >> >>>>>> >>> run and create. > >> >>>>>> >> > >> >>>>>> >> I will write test cases for functions once they are moved into > >> >>>>>> >> their > >> >>>>>> >> separate files as discussed above. > >> >>>>>> >>> > >> >>>>>> >>> > >> >>>>>> >>> Thanks > >> >>>>>> >>> Joao & Shruti > >> >>>>>> >>> > >> >>>>>> >>> > >> >>>>>> >>> On Thu, May 18, 2017 at 1:22 AM, Surinder Kumar > >> >>>>>> >>> <surinder.ku...@enterprisedb.com> wrote: > >> >>>>>> >>>> > >> >>>>>> >>>> Hi Dave, > >> >>>>>> >>>> > >> >>>>>> >>>> Please review the updated patch. > >> >>>>>> >>>> > >> >>>>>> >>>> On Wed, May 17, 2017 at 8:46 PM, Dave Page < > dp...@pgadmin.org> > >> >>>>>> >>>> wrote: > >> >>>>>> >>>>> > >> >>>>>> >>>>> Hi > >> >>>>>> >>>>> > >> >>>>>> >>>>> On Wed, May 17, 2017 at 3:08 PM, Surinder Kumar > >> >>>>>> >>>>> <surinder.ku...@enterprisedb.com> wrote: > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> Hi Dave, > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> Implementation: > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> 1) Took a flag 'is_row_copied' for each copied row: > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> - to distinguish it from add/update row. > >> >>>>>> >>>>>> - to write code specific to copied row only as it > requires > >> >>>>>> >>>>>> different > >> >>>>>> >>>>>> logic than add row. > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> 2) After pasting an existing row: > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> - If a user clear the cell value, it must set cell to > >> >>>>>> >>>>>> [default] value > >> >>>>>> >>>>>> if default value is explicitly given for column while > >> >>>>>> >>>>>> creating table > >> >>>>>> >>>>>> otherwise [null]. > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> - Again, if a user entered a value in same cell, then > >> >>>>>> >>>>>> removes that > >> >>>>>> >>>>>> value, set it to [null] (the same behaviour is for add > row). > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> 3) Took a 2-dimensional array "grid.copied_rows" to keep > >> >>>>>> >>>>>> track the > >> >>>>>> >>>>>> changes of each row's cell so that changes made to each > cell > >> >>>>>> >>>>>> are independent > >> >>>>>> >>>>>> and removed once data is saved. > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> 4) On pasting a row, the cell must be highlighted with > light > >> >>>>>> >>>>>> green > >> >>>>>> >>>>>> colour, so triggers an addNewRow event. Now copied row > will > >> >>>>>> >>>>>> add to grid > >> >>>>>> >>>>>> instead of re-rendering all rows again. > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> 5) Moved the common logic into functions. > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> This patch pass the feature test cases and jasmine test > >> >>>>>> >>>>>> case. > >> >>>>>> >>>>>> Also I will add the test cases for copy row and send an > >> >>>>>> >>>>>> updated patch. > >> >>>>>> >>>>>> > >> >>>>>> >>>>>> Please find attached patch and review. > >> >>>>>> >>>>> > >> >>>>>> >>>>> > >> >>>>>> >>>>> Looks good. I saw the following issues: > >> >>>>>> >>>>> > >> >>>>>> >>>>> - The "new" row is not available once I've created the > first > >> >>>>>> >>>>> new row, > >> >>>>>> >>>>> or pasted some. > >> >>>>>> >>>> > >> >>>>>> >>>> Fixed. > >> >>>>>> >>>>> > >> >>>>>> >>>>> > >> >>>>>> >>>>> - Rows are pasted in reverse order. > >> >>>>>> >>>> > >> >>>>>> >>>> Fixed. > >> >>>>>> >>>>> > >> >>>>>> >>>>> > >> >>>>>> >>>>> - If I copy/paste a new row that has yet to be saved, none > of > >> >>>>>> >>>>> the > >> >>>>>> >>>>> values are actually copied. > >> >>>>>> >>>> > >> >>>>>> >>>> Fixed. > >> >>>>>> >>>>> > >> >>>>>> >>>>> > >> >>>>>> >>>>> - Attempting to save a row that contains all null/default > >> >>>>>> >>>>> values > >> >>>>>> >>>>> results in an invalid query: > >> >>>>>> >>>>> > >> >>>>>> >>>>> INSERT INTO public.defaults ( > >> >>>>>> >>>>> ) VALUES ( > >> >>>>>> >>>>> ); > >> >>>>>> >>>>> > >> >>>>>> >>>>> I think the only answer here is to explicitly insert NULL > >> >>>>>> >>>>> into any > >> >>>>>> >>>>> columns *without* a default value. > >> >>>>>> >>>> > >> >>>>>> >>>> I could not reproduce, However #3 might have fixed it too. > >> >>>>>> >>>> > >> >>>>>> >>>> Apart from this, I noticed epicRandomString(...) function > >> >>>>>> >>>> doesn't > >> >>>>>> >>>> generate unique number always, due to this save and delete > >> >>>>>> >>>> rows was > >> >>>>>> >>>> affected. Not all rows saved or deleted. The new function > >> >>>>>> >>>> always returns a > >> >>>>>> >>>> unique random number. > >> >>>>>> >>>> Fixed. > >> >>>>>> >>>>> > >> >>>>>> >>>>> > >> >>>>>> >>>>> Thanks. > >> >>>>>> >>>>> > >> >>>>>> >>>>> -- > >> >>>>>> >>>>> 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 > >> >>>>> > >> >>>>> > >> >>>> > >> >>> > >> >> > >> > > > > > > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
Feature_test_cases_view_data_v4.patch
Description: Binary data
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers