1] datamodel.js: For collection type added check before adding model into "changed" list instead of adding it blindly.
2] Type casting from str to int of column properties like attlen, attpricision.
3] Added missing data formating when adding new column to existing table (from table edit mode).
4] Added more validation for Foreign key constraint.
5] Column.js: Column grid (in table edit mode) show proper disabled color for disabled cell when grid renders.
6] All constraints and index js added idattribute to distinguish which s/constraint or s/index is updated on server side.
7] Column update.sql: Fixed sql when altering column data type. The issue was when we alter data type from which has length and precision to data type which don't have these properties and vice versa.
For e.g. alter data type numeric(10,12) to real (and vice versa)
8] Renaming constraint (RM1500).
9] simplejson KeyError handing for Python 2.7.
- Test framework support API testing with multiple server for this we need to modify test_config.json(for user it’s test_config.json.in) and test_advanced_config.json(for user it’s test_advanced_config.json.in). Server details of PG and PPAS are included in both .in files.
- Removed the logic of logging in the test client on each test scenario(As per Khushboo's comment in previous email). We need this logic in test cases under ‘browser/tests/’ as for test scenarios like change password and invalid login test cases as test client should be logged out first. So, as per this the code is slightly modified in ‘browser/tests/’.
Root cause:-
When user change schema of already created fdw extension then while creating the new fdw we should append the <schema_name>.<fdw_handler_name>.
Previously we added only <fdw_handler_name> so while executing the query it will not be able to find fdw handler name without schema name.
e.g. If user changed the fdw handler 'postgres_fdw_handler' under schema 'test' then we should display the handler name under fdw as "test. postgres_fdw_handler".
Solution:-
With this patch, we have added <schema_name>.<fdw_handler_name> so while creating or updating the fdw, proper sql will be generated.
1. RM#1293 - SQL pane is not displaying GRANT queries in functions node
2. RM#1294 - Comments are not visible in sql pane for trigger functions and functions
Explanation:
Previously we we using 'get_defintion.sql' template to generate SQL for SQL pane for functions, procedure & trigger functions node.
but GRANT statements and COMMENTS changes were missing. In order to fix that, now we have used both 'create.sql' and 'get_definition.sql' templates to generate full SQL query for SQL pane.
1. Altered variable control to make its UI consistent with privileges and Security labels.
2. Changed datamodel.js to handle duplicate rows at datamodel level and not UI/Control level. (See variable control for example)
1. Select2 control fixed for multi-select mode.
2. Index constrains (primary and unique key) fixed column listing issue.
3. Table node "inherited from" (Select2 control) was not showing table name with public schema
1. Foreign keys listed twice
The label for Exclusion constraint was set to 'Foreign keys'. fixed it.
2. Trigger function, Unique constraint, Primary key should be in title case
3. if user click outside of Preferences window it disappear (it should not disappear)
set preference alertify dialog option closableByDimmer to false.
4. Columns node settings listed twice
Override the register_preferences method in Columns CatalogObjectColumnsModule class
because there are two types of columns node, catalogs columns and tables columns.
so the settings for table columns should also work for catalog columns. Thats why we are not showing preference option for catalogs column node.
Ashesh fixed this issue.
When not using qtLiteral, it was result into an error - "unknown
error displayed when modify comments which may special characters on
Materialized view".
* Do not need to translate an empty string. (that results into the
translation header inclusion in the javacript module).
* String.prototype.StartsWith is not an well received function, it has
not been available in the QWebkit for linux.
The following node module script will be loaded, when first database
node object is added in the browser tree.
* Domains
* Foreign tables
* FTS Configuration
* FTS Dictionary, and
* Functions
Icons for these modules needs to be shown in the dependents list.
procedure node.
This patch also includes other fixes related 'procedure' node as below:
* Generate correct statement for dropping procedure.
* Fetch the missing schema name for the EXEC script.
* Removed the 'DROP CASCADE' menu options, as it is not supported by
procedure.
* Hide the security tab for the objects under the catalog schema.
Patched by Surinder Kumar, vastly improved by me.
* Make the securtiy label across all the nodes, using the same backbone
model across the nodes, and make changes in the backend code for the
same.
* Added 'catalog' as parent type for the domain, procedure nodes.
* Proper initialization of the FTS Configuration, FTS Parser, FTS
Dictionary, FTS Template Nodes.
* Proper Indentation in collection.js
* Moved the Columns, and Constraint to its repective tabs.
* Ensure all the labels only have a capital letter on the first word
(except for keywords or acronyms).
* Resolve the typo in string - 'System table'.
* Error messages on fields should not be shown unless the field loses
focus and has an error.
* "General" section should have a limited subset of information.
* Variables grids should not be on the Security tab.
* Fixes the field labels that imply a question.
* Privileges controls on the Properties lists should be in a "Security"
group.
Apart from review comments improved few other areas too:
* Used in-place DepsCell functionality for columns in both index, and
type node.
* Improved the error handling in constraint nodes.
* Added create, alert SQL Help for nodes associated with the table node.
- Table, Column, Index and Trigger (Author:- Murtuza Zabuawala)
- Constraints Primary Key/Unique/Check/Foreign Key/Exclusion
with integration into Table node (Author:- Harshal Dhumal)
- Rule (Author:- Surinder Kumar)
- Vacuum Control (Initial patch by Surinder Kumar and further enhancement by Murtuza)
'postgis_tiger_geocoder'.
Current implementation changes the schema name, whenever we chance the
name, which is wrong. We should have not change the schema for this
event.
Thanks Fahar Abbas for reporting.
will always have latest data related to that type of node. Also, fixed
the cache_level for different node types.
This commit also contains fixes for the following issue:
* In extension module - use the 'node-list-by-name' instead of using a
custom 'node-ajax-options' control, and removed redundant template
schemas from it.
* When we tries to destroy the select2 object from
Select2Cell/Select2Control while releasing the properties view,
sometimes select2 can not find the instance related it for some
unknown reason. Hence - before removing it we will check for manual
instance existance using $.data('select2').
* When we traverse through the browser tree nodes very quickly, it tries
to remove the object before it gets created completely, and results
into an exception.
* Icon in the select2 drop down list was not visible due to some CSS
issues.
Apart of that, we will generate two new browser events -
'pgadmin-node:created:<NODE-TYPE>', 'pgadmin-node:updated:<NODE-TYPE>'
whenever a new node is created, or an existing node will be updated.
the CAST module. Make the changes in the CAST module too for the
changes done in the NodeAjaxOptionsControl in the commit-id:
944bdbb96c.
We've changed the signature (arguments) of the 'options' & 'transform'
functions.
- Renaming or changing the schema for a shell type should not be allowed.
- I'm allowed to try to add ACL entries or security labels to an
existing shell type. This should be disallowed.
- Changing the schema on a (non-shell) type doesn't work - the type
name is omitted, e.g.
ALTER TYPE pem
SET SCHEMA pemhistory;
Which should be:
ALTER TYPE pem.foo
SET SCHEMA pemhistory;
- Remove unnecessary columns from collection property lists.
- Standardise property names and groupings.
- pg_attribute doesn't have an OID column, so use attnum instead (of atttypid!?!)
- Don't display the OID on Edit dialogues
- Use the ACL summary display in the properties panel, not the subnode editor.
- s/Oid/OID/g
- Ensure all security properties are displayed in the Security group
- Ensure all object definition values are stored in the Definition (or a more precise) group, not General.
- Fix the ordering of General properties so the comment is always show last.
- Display the ACL string in properties, not the subnode panel.
- Offer default values for the owner of new objects.
- Add missing context menu option to create a tablespace from a server node.
which allows to determine certain group to hide/show the whole
tab/fieldset control in the properties, and create dialog.
Using this functionality in the database for the
'default privileges - types', which is not allowed before PG < 9.2 using
the version check.
This commit takes care of the following issues/improvements.
* Adding missing imports for unauthorised in database module
* Node under Servers Nodes (i.e. Databases, tablespaces, roles nodes)
need to be inherited from PGChildNodeView (and, not from NodeView) for
adding server version check for their children.
* Adding statistics for database, and tablespaces in its node (not, yet
in UI)
* Renaming the camel case methods with proper name.
(i.e. getSQL -> get_sql, getNewSQL -> get_new_sql, etc.)
* Fixed the functions going beyond the text limit (column: 80) in
Databases, Roles & Tablespaces modules.
* Fixed the node method of Database module, which was not tested ever.
* We do not need separate SQL template for fetching the name (i.e.
get_name.sql), using the 'nodes.sql' for the same.
* Optimise the query for fetching ACLs for the database node, we didn't
require to join certain tables, while fetching only the ACLs.
* Introduced the list of the ACLs (regular and default ACLs for
different type) supported by each version [Databases Module].
* Renamed the templates 'get_nodes.sql' to' nodes.sql' to make it
consistent with other modules.
* Removed the checks for the authentication table use, as we don't need
to expose the password to the users (even the encrypted MD5). Using
the pg_roles view always for fetching roles/users information now.
* Resolved some typos in unreachable (specially the exceptions
catchment area.)
* Logging the exception in the application.
* Using qtLiteral, qtIdent properly in the templates (do not assume
about the types of data.)
* Using tsid as identifier instead of did for the tablespaces.
* Using nodes method of tablespace view for fetching individual node
information.
* Removing the hardcoded node information from the 'parse_priv_to_db'
function, and pass on allowed ACLs by the caller nodes.
* Using 'nodes.sql' to fetch name of the template instead of writing
that in the delete.sql template, which is definitely wrong place to
fetch the name of the object. [Tablespace Module]
We know that current implemenation have some limitations:
i.e.
* We should not show the template0 in the browser tree.
* Should not connect to the database which does not have permission to connect the server by the current user.
* Show default previlige for PUBLIC in creation mode.
* Allow to create/database database only if current user have sufficient permission.
* Do not show reversed engineered SQL in all supported version.
* Do not showing system database or not.
Author: Khushboo Vashi, Harshal Dhumal, Murtuza Zabuawala
Reviewed by: Neel Patel, Akshay Joshi