You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by mattyb149 <gi...@git.apache.org> on 2017/04/24 13:50:27 UTC

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

GitHub user mattyb149 opened a pull request:

    https://github.com/apache/nifi/pull/1690

    NIFI-3728: Detect 'truncate table' event, allow exclusion of schema change events in CaptureChangeMySQL

    Wouldn't be surprised if #1689 or this PR needs to be rebased, depending on which is merged first.
    
    
    ### For all changes:
    - [x] Is there a JIRA ticket associated with this PR? Is it referenced 
         in the commit message?
    
    - [x] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
    
    - [x] Has your PR been rebased against the latest commit within the target branch (typically master)?
    
    - [x] Is your initial contribution a single, squashed commit?
    
    ### For code changes:
    - [x] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
    - [x] Have you written or updated unit tests to verify your changes?
    - [ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under [ASF 2.0](http://www.apache.org/legal/resolved.html#category-a)? 
    - [ ] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
    - [ ] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
    - [x] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?
    
    ### For documentation related changes:
    - [x] Have you ensured that format looks appropriate for the output in which it is rendered?
    
    ### Note:
    Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/mattyb149/nifi NIFI-3728

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/nifi/pull/1690.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1690
    
----
commit ad1cc16a16f9b3229167330d81c8d9155eab51ee
Author: Matt Burgess <ma...@apache.org>
Date:   2017-04-24T13:48:39Z

    NIFI-3728: Detect 'truncate table' event, allow exclusion of schema change events in CaptureChangeMySQL

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

Posted by mattyb149 <gi...@git.apache.org>.
Github user mattyb149 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1690#discussion_r113187780
  
    --- Diff: nifi-nar-bundles/nifi-cdc/nifi-cdc-mysql-bundle/nifi-cdc-mysql-processors/src/main/java/org/apache/nifi/cdc/mysql/processors/CaptureChangeMySQL.java ---
    @@ -263,6 +263,17 @@
                 .addValidator(StandardValidators.BOOLEAN_VALIDATOR)
                 .build();
     
    +    public static final PropertyDescriptor INCLUDE_SCHEMA_CHANGES = new PropertyDescriptor.Builder()
    +            .name("capture-change-mysql-include-schema-changes")
    +            .displayName("Include Schema Change Events")
    +            .description("Specifies whether to emit events corresponding to a schema change event (ALTER TABLE, e.g.) in the binary log. Set to true if the schema change events are "
    +                    + "desired/necessary in the downstream flow, otherwise set to false, which suppresses generation of these events and can increase flow performance.")
    --- End diff --
    
    Yes please and thank you!


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

Posted by mattyb149 <gi...@git.apache.org>.
Github user mattyb149 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1690#discussion_r113187070
  
    --- Diff: nifi-nar-bundles/nifi-cdc/nifi-cdc-mysql-bundle/nifi-cdc-mysql-processors/src/test/groovy/org/apache/nifi/cdc/mysql/processors/CaptureChangeMySQLTest.groovy ---
    @@ -362,6 +363,79 @@ class CaptureChangeMySQLTest {
             testRunner.provenanceEvents.each { assertEquals(ProvenanceEventType.RECEIVE, it.eventType)}
         }
     
    +    @Test
    +    void testExcludeSchemaChanges() throws Exception {
    +        testRunner.setProperty(CaptureChangeMySQL.DRIVER_LOCATION, 'file:///path/to/mysql-connector-java-5.1.38-bin.jar')
    +        testRunner.setProperty(CaptureChangeMySQL.HOSTS, 'localhost:3306')
    +        testRunner.setProperty(CaptureChangeMySQL.USERNAME, 'root')
    +        testRunner.setProperty(CaptureChangeMySQL.PASSWORD, 'password')
    +        testRunner.setProperty(CaptureChangeMySQL.SERVER_ID, '1')
    +        testRunner.setProperty(CaptureChangeMySQL.CONNECT_TIMEOUT, '2 seconds')
    +        testRunner.setProperty(CaptureChangeMySQL.INIT_BINLOG_FILENAME, 'master.000001')
    +        testRunner.setProperty(CaptureChangeMySQL.INIT_BINLOG_POSITION, '4')
    +        testRunner.setProperty(CaptureChangeMySQL.INCLUDE_SCHEMA_CHANGES, 'false')
    +        final DistributedMapCacheClientImpl cacheClient = createCacheClient()
    +        def clientProperties = [:]
    +        clientProperties.put(DistributedMapCacheClientService.HOSTNAME.getName(), 'localhost')
    +        testRunner.addControllerService('client', cacheClient, clientProperties)
    +        testRunner.setProperty(CaptureChangeMySQL.DIST_CACHE_CLIENT, 'client')
    +        testRunner.enableControllerService(cacheClient)
    +
    +
    +        testRunner.run(1, false, true)
    +
    +        // ROTATE scenario
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.ROTATE, nextPosition: 2] as EventHeaderV4,
    +                [binlogFilename: 'master.000001', binlogPosition: 4L] as RotateEventData
    +        ))
    +
    +        // INSERT scenario
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.QUERY, nextPosition: 4] as EventHeaderV4,
    +                [database: 'myDB', sql: 'BEGIN'] as QueryEventData
    +        ))
    +
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.TABLE_MAP, nextPosition: 6] as EventHeaderV4,
    +                [tableId: 1, database: 'myDB', table: 'myTable', columnTypes: [4, -4] as byte[]] as TableMapEventData
    +        ))
    +
    +        def cols = new BitSet()
    +        cols.set(1)
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.EXT_WRITE_ROWS, nextPosition: 8] as EventHeaderV4,
    +                [tableId: 1, includedColumns: cols,
    +                 rows   : [[2, 'Smith'] as Serializable[], [3, 'Jones'] as Serializable[], [10, 'Cruz'] as Serializable[]] as List<Serializable[]>] as WriteRowsEventData
    +        ))
    +
    +        // ALTER TABLE
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.QUERY, nextPosition: 32] as EventHeaderV4,
    +                [database: 'myDB', sql: 'ALTER TABLE myTable add column col1 int'] as QueryEventData
    +        ))
    +
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.XID, nextPosition: 40] as EventHeaderV4,
    +                {} as EventData
    +        ))
    +
    +        testRunner.run(1, true, false)
    +
    +        def resultFiles = testRunner.getFlowFilesForRelationship(CaptureChangeMySQL.REL_SUCCESS)
    +        // No 'schema_change' events expected
    +        List<String> expectedEventTypes = ([] + 'begin' + Collections.nCopies(3, 'insert') + 'commit')
    --- End diff --
    
    Done (set to true to include them again)


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

Posted by mattyb149 <gi...@git.apache.org>.
Github user mattyb149 commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1690#discussion_r113184431
  
    --- Diff: nifi-nar-bundles/nifi-cdc/nifi-cdc-mysql-bundle/nifi-cdc-mysql-processors/src/main/java/org/apache/nifi/cdc/mysql/processors/CaptureChangeMySQL.java ---
    @@ -263,6 +263,17 @@
                 .addValidator(StandardValidators.BOOLEAN_VALIDATOR)
                 .build();
     
    +    public static final PropertyDescriptor INCLUDE_SCHEMA_CHANGES = new PropertyDescriptor.Builder()
    +            .name("capture-change-mysql-include-schema-changes")
    +            .displayName("Include Schema Change Events")
    +            .description("Specifies whether to emit events corresponding to a schema change event (ALTER TABLE, e.g.) in the binary log. Set to true if the schema change events are "
    +                    + "desired/necessary in the downstream flow, otherwise set to false, which suppresses generation of these events and can increase flow performance.")
    --- End diff --
    
    Now that we're including things like truncate, I agree.  However we refer to "schema change" many times in the CDC code. I wrote up NIFI-3735 to cover the change in terminology across the CDC code. In the meantime however, I will just update this property to have the correct documentation.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi issue #1690: NIFI-3728: Detect 'truncate table' event, allow exclusion ...

Posted by ijokarumawak <gi...@git.apache.org>.
Github user ijokarumawak commented on the issue:

    https://github.com/apache/nifi/pull/1690
  
    All changes look good to me. Merging into master. Thanks @mattyb149 !


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

Posted by ijokarumawak <gi...@git.apache.org>.
Github user ijokarumawak commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1690#discussion_r113112505
  
    --- Diff: nifi-nar-bundles/nifi-cdc/nifi-cdc-mysql-bundle/nifi-cdc-mysql-processors/src/test/groovy/org/apache/nifi/cdc/mysql/processors/CaptureChangeMySQLTest.groovy ---
    @@ -362,6 +363,79 @@ class CaptureChangeMySQLTest {
             testRunner.provenanceEvents.each { assertEquals(ProvenanceEventType.RECEIVE, it.eventType)}
         }
     
    +    @Test
    +    void testExcludeSchemaChanges() throws Exception {
    +        testRunner.setProperty(CaptureChangeMySQL.DRIVER_LOCATION, 'file:///path/to/mysql-connector-java-5.1.38-bin.jar')
    +        testRunner.setProperty(CaptureChangeMySQL.HOSTS, 'localhost:3306')
    +        testRunner.setProperty(CaptureChangeMySQL.USERNAME, 'root')
    +        testRunner.setProperty(CaptureChangeMySQL.PASSWORD, 'password')
    +        testRunner.setProperty(CaptureChangeMySQL.SERVER_ID, '1')
    +        testRunner.setProperty(CaptureChangeMySQL.CONNECT_TIMEOUT, '2 seconds')
    +        testRunner.setProperty(CaptureChangeMySQL.INIT_BINLOG_FILENAME, 'master.000001')
    +        testRunner.setProperty(CaptureChangeMySQL.INIT_BINLOG_POSITION, '4')
    +        testRunner.setProperty(CaptureChangeMySQL.INCLUDE_SCHEMA_CHANGES, 'false')
    +        final DistributedMapCacheClientImpl cacheClient = createCacheClient()
    +        def clientProperties = [:]
    +        clientProperties.put(DistributedMapCacheClientService.HOSTNAME.getName(), 'localhost')
    +        testRunner.addControllerService('client', cacheClient, clientProperties)
    +        testRunner.setProperty(CaptureChangeMySQL.DIST_CACHE_CLIENT, 'client')
    +        testRunner.enableControllerService(cacheClient)
    +
    +
    +        testRunner.run(1, false, true)
    +
    +        // ROTATE scenario
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.ROTATE, nextPosition: 2] as EventHeaderV4,
    +                [binlogFilename: 'master.000001', binlogPosition: 4L] as RotateEventData
    +        ))
    +
    +        // INSERT scenario
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.QUERY, nextPosition: 4] as EventHeaderV4,
    +                [database: 'myDB', sql: 'BEGIN'] as QueryEventData
    +        ))
    +
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.TABLE_MAP, nextPosition: 6] as EventHeaderV4,
    +                [tableId: 1, database: 'myDB', table: 'myTable', columnTypes: [4, -4] as byte[]] as TableMapEventData
    +        ))
    +
    +        def cols = new BitSet()
    +        cols.set(1)
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.EXT_WRITE_ROWS, nextPosition: 8] as EventHeaderV4,
    +                [tableId: 1, includedColumns: cols,
    +                 rows   : [[2, 'Smith'] as Serializable[], [3, 'Jones'] as Serializable[], [10, 'Cruz'] as Serializable[]] as List<Serializable[]>] as WriteRowsEventData
    +        ))
    +
    +        // ALTER TABLE
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.QUERY, nextPosition: 32] as EventHeaderV4,
    +                [database: 'myDB', sql: 'ALTER TABLE myTable add column col1 int'] as QueryEventData
    +        ))
    +
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.XID, nextPosition: 40] as EventHeaderV4,
    +                {} as EventData
    +        ))
    +
    +        testRunner.run(1, true, false)
    +
    +        def resultFiles = testRunner.getFlowFilesForRelationship(CaptureChangeMySQL.REL_SUCCESS)
    +        // No 'schema_change' events expected
    +        List<String> expectedEventTypes = ([] + 'begin' + Collections.nCopies(3, 'insert') + 'commit')
    +
    +        resultFiles.eachWithIndex { e, i ->
    +            assertEquals(i, Long.valueOf(e.getAttribute(EventWriter.SEQUENCE_ID_KEY)))
    +            assertEquals(EventWriter.APPLICATION_JSON, e.getAttribute(CoreAttributes.MIME_TYPE.key()))
    +            assertEquals((i < 8) ? 'master.000001' : 'master.000002', e.getAttribute(BinlogEventInfo.BINLOG_FILENAME_KEY))
    +            assertTrue(Long.valueOf(e.getAttribute(BinlogEventInfo.BINLOG_POSITION_KEY)) % 4 == 0L)
    +            assertEquals(e.getAttribute('cdc.event.type'), expectedEventTypes[i])
    --- End diff --
    
    `assertEquals` takes two arguments and the 1st is the expected one. This line should be:
    ```
    assertEquals(expectedEventTypes[i], e.getAttribute('cdc.event.type'))
    ```
    I got confused when I see an assertion error message.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

Posted by ijokarumawak <gi...@git.apache.org>.
Github user ijokarumawak commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1690#discussion_r113186918
  
    --- Diff: nifi-nar-bundles/nifi-cdc/nifi-cdc-mysql-bundle/nifi-cdc-mysql-processors/src/main/java/org/apache/nifi/cdc/mysql/processors/CaptureChangeMySQL.java ---
    @@ -263,6 +263,17 @@
                 .addValidator(StandardValidators.BOOLEAN_VALIDATOR)
                 .build();
     
    +    public static final PropertyDescriptor INCLUDE_SCHEMA_CHANGES = new PropertyDescriptor.Builder()
    +            .name("capture-change-mysql-include-schema-changes")
    +            .displayName("Include Schema Change Events")
    +            .description("Specifies whether to emit events corresponding to a schema change event (ALTER TABLE, e.g.) in the binary log. Set to true if the schema change events are "
    +                    + "desired/necessary in the downstream flow, otherwise set to false, which suppresses generation of these events and can increase flow performance.")
    --- End diff --
    
    Sounds good, thank you! Is this PR ready for another review cycle?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

Posted by ijokarumawak <gi...@git.apache.org>.
Github user ijokarumawak commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1690#discussion_r113112949
  
    --- Diff: nifi-nar-bundles/nifi-cdc/nifi-cdc-mysql-bundle/nifi-cdc-mysql-processors/src/test/groovy/org/apache/nifi/cdc/mysql/processors/CaptureChangeMySQLTest.groovy ---
    @@ -362,6 +363,79 @@ class CaptureChangeMySQLTest {
             testRunner.provenanceEvents.each { assertEquals(ProvenanceEventType.RECEIVE, it.eventType)}
         }
     
    +    @Test
    +    void testExcludeSchemaChanges() throws Exception {
    +        testRunner.setProperty(CaptureChangeMySQL.DRIVER_LOCATION, 'file:///path/to/mysql-connector-java-5.1.38-bin.jar')
    +        testRunner.setProperty(CaptureChangeMySQL.HOSTS, 'localhost:3306')
    +        testRunner.setProperty(CaptureChangeMySQL.USERNAME, 'root')
    +        testRunner.setProperty(CaptureChangeMySQL.PASSWORD, 'password')
    +        testRunner.setProperty(CaptureChangeMySQL.SERVER_ID, '1')
    +        testRunner.setProperty(CaptureChangeMySQL.CONNECT_TIMEOUT, '2 seconds')
    +        testRunner.setProperty(CaptureChangeMySQL.INIT_BINLOG_FILENAME, 'master.000001')
    +        testRunner.setProperty(CaptureChangeMySQL.INIT_BINLOG_POSITION, '4')
    +        testRunner.setProperty(CaptureChangeMySQL.INCLUDE_SCHEMA_CHANGES, 'false')
    +        final DistributedMapCacheClientImpl cacheClient = createCacheClient()
    +        def clientProperties = [:]
    +        clientProperties.put(DistributedMapCacheClientService.HOSTNAME.getName(), 'localhost')
    +        testRunner.addControllerService('client', cacheClient, clientProperties)
    +        testRunner.setProperty(CaptureChangeMySQL.DIST_CACHE_CLIENT, 'client')
    +        testRunner.enableControllerService(cacheClient)
    +
    +
    +        testRunner.run(1, false, true)
    +
    +        // ROTATE scenario
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.ROTATE, nextPosition: 2] as EventHeaderV4,
    +                [binlogFilename: 'master.000001', binlogPosition: 4L] as RotateEventData
    +        ))
    +
    +        // INSERT scenario
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.QUERY, nextPosition: 4] as EventHeaderV4,
    +                [database: 'myDB', sql: 'BEGIN'] as QueryEventData
    +        ))
    +
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.TABLE_MAP, nextPosition: 6] as EventHeaderV4,
    +                [tableId: 1, database: 'myDB', table: 'myTable', columnTypes: [4, -4] as byte[]] as TableMapEventData
    +        ))
    +
    +        def cols = new BitSet()
    +        cols.set(1)
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.EXT_WRITE_ROWS, nextPosition: 8] as EventHeaderV4,
    +                [tableId: 1, includedColumns: cols,
    +                 rows   : [[2, 'Smith'] as Serializable[], [3, 'Jones'] as Serializable[], [10, 'Cruz'] as Serializable[]] as List<Serializable[]>] as WriteRowsEventData
    +        ))
    +
    +        // ALTER TABLE
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.QUERY, nextPosition: 32] as EventHeaderV4,
    +                [database: 'myDB', sql: 'ALTER TABLE myTable add column col1 int'] as QueryEventData
    +        ))
    +
    +        client.sendEvent(new Event(
    +                [timestamp: new Date().time, eventType: EventType.XID, nextPosition: 40] as EventHeaderV4,
    +                {} as EventData
    +        ))
    +
    +        testRunner.run(1, true, false)
    +
    +        def resultFiles = testRunner.getFlowFilesForRelationship(CaptureChangeMySQL.REL_SUCCESS)
    +        // No 'schema_change' events expected
    +        List<String> expectedEventTypes = ([] + 'begin' + Collections.nCopies(3, 'insert') + 'commit')
    --- End diff --
    
    This test fails because #1689 suppress generation of begin/commit events by default. Please add "INCLUDE_BEGIN_COMMIT, false" or update this expectation.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

Posted by ijokarumawak <gi...@git.apache.org>.
Github user ijokarumawak commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/1690#discussion_r113114162
  
    --- Diff: nifi-nar-bundles/nifi-cdc/nifi-cdc-mysql-bundle/nifi-cdc-mysql-processors/src/main/java/org/apache/nifi/cdc/mysql/processors/CaptureChangeMySQL.java ---
    @@ -263,6 +263,17 @@
                 .addValidator(StandardValidators.BOOLEAN_VALIDATOR)
                 .build();
     
    +    public static final PropertyDescriptor INCLUDE_SCHEMA_CHANGES = new PropertyDescriptor.Builder()
    +            .name("capture-change-mysql-include-schema-changes")
    +            .displayName("Include Schema Change Events")
    +            .description("Specifies whether to emit events corresponding to a schema change event (ALTER TABLE, e.g.) in the binary log. Set to true if the schema change events are "
    +                    + "desired/necessary in the downstream flow, otherwise set to false, which suppresses generation of these events and can increase flow performance.")
    --- End diff --
    
    I personally think "Include DDL (Data Definition Language) Events" would be more preferable for this property name. Specifically `truncate` doesn't change schema. Users may assume wrongly that `truncate table` is not included.
    
    When we say DDL, it includes `truncate` [generally](https://en.wikipedia.org/wiki/Data_definition_language).


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi issue #1690: NIFI-3728: Detect 'truncate table' event, allow exclusion ...

Posted by ijokarumawak <gi...@git.apache.org>.
Github user ijokarumawak commented on the issue:

    https://github.com/apache/nifi/pull/1690
  
    Reviewing...


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] nifi pull request #1690: NIFI-3728: Detect 'truncate table' event, allow exc...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/nifi/pull/1690


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---