Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Explicit keys #5533

Merged
merged 7 commits into from
Jun 3, 2020
Merged

Commits on Jun 3, 2020

  1. feat: explicit keys

    implements: [KLIP-29](confluentinc#5530)
    
    fixes: confluentinc#5303
    fixes: confluentinc#4678
    
    This change sees ksqlDB no longer adding an implicit `ROWKEY STRING` key column to created streams or primary key column to created tables when no key column is explicitly provided in the `CREATE` statement.
    
    BREAKING CHANGE
    
    `CREATE TABLE` statements will now fail if not `PRIMARY KEY` column is provided.
    
    For example, a statement such as:
    
    ```sql
    CREATE TABLE FOO (name STRING) WITH (kafka_topic='foo', value_format='json');
    ```
    
    Will need to be updated to include the definition of the PRIMARY KEY, e.g.
    
    ```sql
    CREATE TABLE FOO (ID STRING PRIMARY KEY, name STRING) WITH (kafka_topic='foo', value_format='json');
    ```
    
    If using schema inference, i.e. loading the value columns of the topic from the Schema Registry, the primary key can be provided as a partial schema, e.g.
    
    ```sql
    -- FOO will have value columns loaded from the Schema Registry
    CREATE TABLE FOO (ID INT PRIMARY KEY) WITH (kafka_topic='foo', value_format='avro');
    ```
    
    `CREATE STREAM` statements that do not define a `KEY` column will no longer have an implicit `ROWKEY` key column.
    
    For example:
    
    ```sql
    CREATE STREAM BAR (NAME STRING) WITH (...);
    ```
    
    The above statement would previously have resulted in a stream with two columns: `ROWKEY STRING KEY` and `NAME STRING`.
    With this change the above statement will result in a stream with only the `NAME STRING` column.
    
    Streams will no KEY column will be serialized to Kafka topics with a `null` key.
    big-andy-coates committed Jun 3, 2020
    Configuration menu
    Copy the full SHA
    2dd637e View commit details
    Browse the repository at this point in the history
  2. docs: docs

    big-andy-coates committed Jun 3, 2020
    Configuration menu
    Copy the full SHA
    97b86a3 View commit details
    Browse the repository at this point in the history
  3. test: test changes

    big-andy-coates committed Jun 3, 2020
    Configuration menu
    Copy the full SHA
    e952d91 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    6ddfdee View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    2f5ac03 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    e281961 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    48853b4 View commit details
    Browse the repository at this point in the history