[JBoss JIRA] (TEIID-4528) ddl generation / parsing semicolon handling
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4528?page=com.atlassian.jira.plugin... ]
Steven Hawkins reassigned TEIID-4528:
-------------------------------------
Assignee: Steven Hawkins (was: Barry LaFond)
> ddl generation / parsing semicolon handling
> -------------------------------------------
>
> Key: TEIID-4528
> URL: https://issues.jboss.org/browse/TEIID-4528
> Project: Teiid
> Issue Type: Bug
> Components: Grammar, Query Engine
> Reporter: Steven Hawkins
> Assignee: Steven Hawkins
> Fix For: 9.2
>
>
> The DDL to string logic omits the trailing semicolon with global temp tables and create procedure statements. The parser is also lax in that it will accept multiple ddl statements without a delimiter. With the addition of new keywords / statements in TEIID-2578 this introduces ambiguities into the grammar.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 2 months
[JBoss JIRA] (TEIID-2578) add/remove schema elements
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-2578?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-2578:
---------------------------------------
The more I look at the remoting, the more trouble we may be getting ourselves in. Serializing the entire database can be a significant overhead. Also, just like was mentioned with the alter above, consistency can be an issue - performing a drop at the same time from two cluster members that are mutually exclusive.
Unless I'm missing something, the DatabaseStore calls EventDistributor.dropDatabase, when in turn is called for each cluster member, which in turn each will call the adminEventDistributor methods to deleteDataSources. Shouldn't only the first succeed? Also what is the notion of server ownership on a databaseDrop?
I've pushed changes to https://github.com/teiid/teiid/tree/TEIID-2578 so that we can coordinate on things from there.
> add/remove schema elements
> --------------------------
>
> Key: TEIID-2578
> URL: https://issues.jboss.org/browse/TEIID-2578
> Project: Teiid
> Issue Type: Feature Request
> Components: Query Engine
> Reporter: Ramesh Reddy
> Assignee: Ramesh Reddy
> Fix For: 9.2
>
>
> Schemas are currently static after load. Modifications can only happen with restarts or new versions. We should allow add/drop at runtime.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 2 months
[JBoss JIRA] (TEIID-4528) ddl generation / parsing semicolon handling
by Steven Hawkins (JIRA)
Steven Hawkins created TEIID-4528:
-------------------------------------
Summary: ddl generation / parsing semicolon handling
Key: TEIID-4528
URL: https://issues.jboss.org/browse/TEIID-4528
Project: Teiid
Issue Type: Bug
Components: Grammar, Query Engine
Reporter: Steven Hawkins
Assignee: Barry LaFond
Fix For: 9.2
The DDL to string logic omits the trailing semicolon with global temp tables and create procedure statements. The parser is also lax in that it will accept multiple ddl statements without a delimiter. With the addition of new keywords / statements in TEIID-2578 this introduces ambiguities into the grammar.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 2 months
[JBoss JIRA] (TEIID-4527) Add cache-hint to dynamically create internal materialization
by Van Halbert (JIRA)
Van Halbert created TEIID-4527:
----------------------------------
Summary: Add cache-hint to dynamically create internal materialization
Key: TEIID-4527
URL: https://issues.jboss.org/browse/TEIID-4527
Project: Teiid
Issue Type: Feature Request
Components: Query Engine, Server
Affects Versions: 9.2
Reporter: Van Halbert
Assignee: Steven Hawkins
Add the ability to use a cache-hint that will dynamically create an internal materialization of the results that can then be queried.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 2 months
[JBoss JIRA] (TEIID-4526) Integrate with Debezium for CDC for maintaining materialized views
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-4526?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-4526:
---------------------------------------
> the above approach of using updatematViewRow is not correct because its updating the actual row in the mat view table without applying the actual View transformation logic
The considerations here are that the updateMatViewRow is only for internal materialization, and yes it's directly tied to modifying the materialization table. To create an appropriate change value, you would need to do a select with no cache from view and pull appropriately updated rows, then update each one. This method largely exists because there was no other way to modify the internal materialization target other than to completely refresh and the change is easy to broadcast.
> The only way to ensure the correct result is to only trigger the update when the "key" can be identified in a change.
Yes, some "trigger" has to understand a base tables relationship to all consuming entities and propagate them accordingly. As mentioned above this can be done with a full row fresh, or what I've talked about is updating of materialization logic to support lazier row refreshing using an invalidation flag - but it still requires determining what row(s) are affected.
> Am I over thinking this? Is there something simpler?
Unfortunately it's much more complicated. Our problems with CDC starts with the metadata. Since we allow for hand editing and only capture a simple quoted name in source, we first have a matching problem from any event source to our source metadata. Then inferring values directly from the change event can be an issue as the CDC layer is broadcasting raw values, not what you would fetch over jdbc (there can be type issues, or even the consideration of masking and other affects). From there yes we have to sufficiently understand the view structure to make an appropriate update. That will not always be a simple changes as aggregates may need recomputed, multiple rows removed, etc. What we talked about at the face-to-face was at least keeping some notion of how "dirty" a particular materialized view was (number of updates that affect the view vs. number of view rows) and trigger a full refresh above a given threshold. We also need to determine if there are differing expectations for internal vs. external materialization.
> Integrate with Debezium for CDC for maintaining materialized views
> ------------------------------------------------------------------
>
> Key: TEIID-4526
> URL: https://issues.jboss.org/browse/TEIID-4526
> Project: Teiid
> Issue Type: Feature Request
> Components: Server
> Affects Versions: 9.2
> Reporter: Van Halbert
> Assignee: Steven Hawkins
> Priority: Critical
>
> Integrate with Debezium so that Teiid will be able to consume and react to the row-level change events and do something interesting with them, such as update the materialized view(s).
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 2 months
[JBoss JIRA] (TEIID-4526) Integrate with Debezium for CDC for maintaining materialized views
by Van Halbert (JIRA)
[ https://issues.jboss.org/browse/TEIID-4526?page=com.atlassian.jira.plugin... ]
Van Halbert commented on TEIID-4526:
------------------------------------
Maybe certain tables have to be tracked differently. Like: static or volatile
When a static table is changed, all materialized views using the table will be refreshed
When a volatile table is changed and it has field as part of the primary key to the view, then trigger the refresh.
> Integrate with Debezium for CDC for maintaining materialized views
> ------------------------------------------------------------------
>
> Key: TEIID-4526
> URL: https://issues.jboss.org/browse/TEIID-4526
> Project: Teiid
> Issue Type: Feature Request
> Components: Server
> Affects Versions: 9.2
> Reporter: Van Halbert
> Assignee: Steven Hawkins
> Priority: Critical
>
> Integrate with Debezium so that Teiid will be able to consume and react to the row-level change events and do something interesting with them, such as update the materialized view(s).
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 2 months
[JBoss JIRA] (TEIID-4526) Integrate with Debezium for CDC for maintaining materialized views
by Van Halbert (JIRA)
[ https://issues.jboss.org/browse/TEIID-4526?page=com.atlassian.jira.plugin... ]
Van Halbert commented on TEIID-4526:
------------------------------------
the above approach of using updatematViewRow is not correct because its updating the actual row in the mat view table without applying the actual View transformation logic. So what is needed is the ability to call SYSADMIN.refreshMatViewRow (example: EXEC SYSADMIN.refreshMatViewRow('TestMat.SAMPLEMATVIEW', '{id}') )
But even that really won't work, because on a very complex view transformation, the table change could be for a table in a subselect of the view transformation. The key value of the row change is not enough to limit the subselect correctly. Which could return the wrong results if its used in an "IN" subselect because other data is no longer included in the subselect.
The only way to ensure the correct result is to only trigger the update when the "key" can be identified in a change. Am I over thinking this? Is there something simpler?
> Integrate with Debezium for CDC for maintaining materialized views
> ------------------------------------------------------------------
>
> Key: TEIID-4526
> URL: https://issues.jboss.org/browse/TEIID-4526
> Project: Teiid
> Issue Type: Feature Request
> Components: Server
> Affects Versions: 9.2
> Reporter: Van Halbert
> Assignee: Steven Hawkins
> Priority: Critical
>
> Integrate with Debezium so that Teiid will be able to consume and react to the row-level change events and do something interesting with them, such as update the materialized view(s).
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
8 years, 2 months