[
https://issues.apache.org/jira/browse/KAFKA-4353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15811608#comment-15811608
]
ASF GitHub Bot commented on KAFKA-4353:
---------------------------------------
GitHub user rnpridgeon opened a pull request:
https://github.com/apache/kafka/pull/2334
subset of KAFKA-4353: Add uuid
Alternatively I am open to using Avro's 'Fixed' type with a 16 byte size.
However most requests I have seen received wish to see UUID represented as type
String so I went with that to start.
Also I just realized that Intellij's 'optimized imports' squashed the
import list. Follow-up commit soon to follow with expanded import list
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/rnpridgeon/kafka add_uuid
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/kafka/pull/2334.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 #2334
----
commit 8413f7d558e6c9b1a4bfe580c6557e4fc337ed97
Author: rnpridgeon <[email protected]>
Date: 2017-01-09T11:28:24Z
Add UUID logical type
commit fdbce61dd1eefcaf08276a19d3e424e33d78cbba
Author: rnpridgeon <[email protected]>
Date: 2017-01-09T11:49:19Z
Add UUID logical type (fix tests)
----
> Add semantic types to Kafka Connect
> -----------------------------------
>
> Key: KAFKA-4353
> URL: https://issues.apache.org/jira/browse/KAFKA-4353
> Project: Kafka
> Issue Type: Improvement
> Components: KafkaConnect
> Affects Versions: 0.10.0.1
> Reporter: Randall Hauch
> Assignee: Ewen Cheslack-Postava
>
> Kafka Connect's schema system defines several _core types_ that consist of:
> * STRUCT
> * ARRAY
> * MAP
> plus these _primitive types_:
> * INT8
> * INT16
> * INT32
> * INT64
> * FLOAT32
> * FLOAT64
> * BOOLEAN
> * STRING
> * BYTES
> The {{Schema}} for these core types define several attributes, but they do
> not have a name.
> Kafka Connect also defines several _logical types_ that are specializations
> of the primitive types and _do_ have schema names _and_ are automatically
> mapped to/from Java objects:
> || Schema Name || Primitive Type || Java value class || Description ||
> | o.k.c.d.Decimal | {{BYTES}} | {{java.math.BigDecimal}} | An
> arbitrary-precision signed decimal number. |
> | o.k.c.d.Date | {{INT32}} | {{java.util.Date}} | A date representing a
> calendar day with no time of day or timezone. The {{java.util.Date}} value's
> hours, minutes, seconds, milliseconds are set to 0. The underlying
> representation is an integer representing the number of standardized days
> (based on a number of milliseconds with 24 hours/day, 60 minutes/hour, 60
> seconds/minute, 1000 milliseconds/second with n) since Unix epoch. |
> | o.k.c.d.Time | {{INT32}} | {{java.util.Date}} | A time representing a
> specific point in a day, not tied to any specific date. Only the
> {{java.util.Date}} value's hours, minutes, seconds, and milliseconds can be
> non-zero. This effectively makes it a point in time during the first day
> after the Unix epoch. The underlying representation is an integer
> representing the number of milliseconds after midnight. |
> | o.k.c.d.Timestamp | {{INT32}} | {{java.util.Date}} | A timestamp
> representing an absolute time, without timezone information. The underlying
> representation is a long representing the number of milliseconds since Unix
> epoch. |
> where "o.k.c.d" is short for {{org.kafka.connect.data}}. [~ewencp] has stated
> in the past that adding more logical types is challenging and generally
> undesirable, since everyone use Kafka Connect values have to deal with all
> new logical types.
> This proposal adds standard _semantic_ types that are somewhere between the
> core types and logical types. Basically, they are just predefined schemas
> that have names and are based on other primitive types. However, there is no
> mapping to another form other than the primitive.
> The purpose of semantic types is to provide hints as to how the values _can_
> be treated. Of course, clients are free to ignore the hints of some or all of
> the built-in semantic types, and in these cases would treat the values as the
> primitive value with no extra semantics. This behavior makes it much easier
> to add new semantic types over time without risking incompatibilities.
> Really, any source connector can define custom semantic types, but there is
> tremendous value in having a library of standard, well-known semantic types,
> including:
> || Schema Name || Primitive Type || Description ||
> | o.k.c.d.Uuid | {{STRING}} | A UUID in string form.|
> | o.k.c.d.Json | {{STRING}} | A JSON document, array, or scalar in string
> form.|
> | o.k.c.d.Xml | {{STRING}} | An XML document in string form.|
> | o.k.c.d.BitSet | {{STRING}} | A string of zero or more {{0}} or {{1}}
> characters.|
> | o.k.c.d.ZonedTime | {{STRING}} | An ISO-8601 formatted representation of a
> time (with fractional seconds) with timezone or offset from UTC.|
> | o.k.c.d.ZonedTimestamp | {{STRING}} | An ISO-8601 formatted representation
> of a timestamp with timezone or offset from UTC.|
> | o.k.c.d.EpochDays | {{INT64}} | A date with no time or timezone
> information, represented as the number of days since (or before) epoch, or
> January 1, 1970, at 00:00:00UTC.|
> | o.k.c.d.Year | {{INT32}} | The year number.|
> | o.k.c.d.MilliTime | {{INT32}} | Number of milliseconds past midnight.|
> | o.k.c.d.MicroTime | {{INT64}} | Number of microseconds past midnight.|
> | o.k.c.d.NanoTime | {{INT64}} | Number of nanoseconds past midnight.|
> | o.k.c.d.MilliTimestamp | {{INT64}} | Number of milliseconds past epoch.|
> | o.k.c.d.MicroTimestamp | {{INT64}} | Number of microseconds past epoch.|
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)