[
https://issues.apache.org/jira/browse/BEAM-12697?focusedWorklogId=676144&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-676144
]
ASF GitHub Bot logged work on BEAM-12697:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 04/Nov/21 02:02
Start Date: 04/Nov/21 02:02
Worklog Time Spent: 10m
Work Description: zhoufek commented on a change in pull request #15733:
URL: https://github.com/apache/beam/pull/15733#discussion_r741998683
##########
File path:
sdks/java/extensions/sbe/src/main/java/org/apache/beam/sdk/extensions/sbe/TimeValues.java
##########
@@ -0,0 +1,460 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.beam.sdk.extensions.sbe;
+
+import static org.apache.beam.sdk.extensions.sbe.Schemas.TZ_TIME_SCHEMA;
+import static
org.apache.beam.sdk.extensions.sbe.Schemas.TimeFieldNames.TIME_FIELD_NAME;
+import static
org.apache.beam.sdk.extensions.sbe.Schemas.TimeFieldNames.TIME_ZONE_HOUR_FIELD_NAME;
+import static
org.apache.beam.sdk.extensions.sbe.Schemas.TimeFieldNames.TIME_ZONE_MINUTE_FIELD_NAME;
+import static
org.apache.beam.sdk.extensions.sbe.Schemas.TimeFieldNames.UNIT_FIELD_NAME;
+import static org.apache.beam.sdk.extensions.sbe.Schemas.UTC_TIME_SCHEMA;
+import static
org.apache.beam.vendor.guava.v26_0_jre.com.google.common.base.Preconditions.checkArgument;
+
+import java.time.Instant;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
+import java.time.ZoneOffset;
+import java.time.temporal.ChronoUnit;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+import org.apache.beam.sdk.values.Row;
+import org.checkerframework.checker.initialization.qual.Initialized;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.checker.nullness.qual.Nullable;
+
+/**
+ * Representations of SBE value types.
+ *
+ * <p>These are convertible to/from a {@link Row} that is a direct mapping of
an SBE composite type.
+ */
+public final class TimeValues {
Review comment:
> What I meant by make progress was to build other infrastructure, like
the `PayloadSerializerProvider`, that only supports the unambiguous types (for
now).
Yeah, that's doable. I was just noting that in not explicitly accounting for
these types, they'll likely be translated into a `Row` of primitive fields.
That's how we would be handling unfamiliar composite types.
Actually, I am thinking back to my earlier comment about detecting the unit
in converting to the SBE type, and I think that analyzing the type with
reflection will always be necessary to avoid trying to write the unit when it
is constant, which removes the first two concerns I had. The only challenge is
getting the right unit in the variable case, but I can think of some ways to do
that easily, though we may still choose a less precise unit than the original
if the less precise unit would give the same result. I've at least tried this
out with Instant, and I'd imagine it will work the same for the other types.
Basically, I'm thinking we could probably use Java time types and determine
the wire format that works best. I'll update the logical types, and if there's
still concerns, I can remove them and revisit them in a later PR.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 676144)
Time Spent: 14h (was: 13h 50m)
> SBE Extension
> -------------
>
> Key: BEAM-12697
> URL: https://issues.apache.org/jira/browse/BEAM-12697
> Project: Beam
> Issue Type: New Feature
> Components: sdk-java-core
> Reporter: Zachary Houfek
> Assignee: Zachary Houfek
> Priority: P2
> Time Spent: 14h
> Remaining Estimate: 0h
>
> This is a prerequisite to BEAM-12298.
> The intent is to add an extension for Simple Binary Encoding, similar to what
> exists for Protobuf.
> Design doc:
> [https://docs.google.com/document/d/1YiZR__1EsV9tDFsNUhvbpv2YjeP5cMl1c3Wj7Nb1fWs|https://docs.google.com/document/d/1q2KyBxPQ6V6Gfm50Z74YWofATgVauYu066F0t1JPxRU/edit?usp=sharing]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)