Skip to content

Commit 85ce552

Browse files
committed
test refactor.
1 parent bcad803 commit 85ce552

File tree

3 files changed

+395
-349
lines changed

3 files changed

+395
-349
lines changed

sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryUtils.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ public class BigQueryUtils {
115115
+ "(?<DATASET>[a-zA-Z0-9_]{1,1024})[\\.]"
116116
+ "(?<TABLE>[\\p{L}\\p{M}\\p{N}\\p{Pc}\\p{Pd}\\p{Zs}$]{1,1024})$");
117117

118+
private static final long PICOSECOND_PRECISION = 12L;
119+
118120
/** Options for how to convert BigQuery data to Beam data. */
119121
@AutoValue
120122
public abstract static class ConversionOptions implements Serializable {
@@ -416,7 +418,7 @@ public static TimestampPicos parseTimestampPicosFromString(String timestampStrin
416418
String fractionalPart =
417419
timestampString.substring(dotIndex + 1, timestampString.length() - 1);
418420

419-
if (fractionalPart.length() == 12) {
421+
if ((long) fractionalPart.length() == PICOSECOND_PRECISION) {
420422
// ISO timestamp with 12 decimal digits (picosecond precision)
421423
// Parse the datetime part (without fractional seconds)
422424
String dateTimePart = timestampString.substring(0, dotIndex) + "Z";

sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/TableRowToStorageApiProto.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ public interface ThrowingBiFunction<FirstInputT, SecondInputT, OutputT> {
216216
static final DecimalFormat DECIMAL_FORMAT =
217217
new DecimalFormat("0.0###############", DecimalFormatSymbols.getInstance(Locale.ROOT));
218218

219+
private static final long PICOSECOND_PRECISION = 12L;
220+
219221
// Map of functions to convert json values into the value expected in the Vortex proto object.
220222
static final Map<TableFieldSchema.Type, ThrowingBiFunction<String, Object, @Nullable Object>>
221223
TYPE_MAP_PROTO_CONVERTERS =
@@ -982,7 +984,7 @@ static TableFieldSchema tableFieldSchemaFromDescriptorField(FieldDescriptor fiel
982984
case MESSAGE:
983985
if (fieldDescriptor.getMessageType().getName().equals("TimestampPicos")) {
984986
tableFieldSchemaBuilder.setType(TableFieldSchema.Type.TIMESTAMP);
985-
tableFieldSchemaBuilder.setPrecision(12);
987+
tableFieldSchemaBuilder.setPrecision(PICOSECOND_PRECISION);
986988
} else {
987989
tableFieldSchemaBuilder = tableFieldSchemaBuilder.setType(TableFieldSchema.Type.STRUCT);
988990
TableSchema nestedTableField =
@@ -1090,7 +1092,7 @@ private static void fieldDescriptorFromTableField(
10901092
fieldDescriptorBuilder.setType(Type.TYPE_MESSAGE).setTypeName(nested.getName());
10911093
break;
10921094
case TIMESTAMP:
1093-
if (fieldSchema.getTimestampPrecision().getValue() == 12) {
1095+
if (fieldSchema.getTimestampPrecision().getValue() == PICOSECOND_PRECISION) {
10941096
boolean typeAlreadyExists =
10951097
descriptorBuilder.getNestedTypeList().stream()
10961098
.anyMatch(d -> TIMESTAMP_PICOS_DESCRIPTOR_PROTO.getName().equals(d.getName()));
@@ -1362,7 +1364,7 @@ public static ByteString mergeNewFields(
13621364
null);
13631365
}
13641366
} else if (schemaInformation.getType() == TableFieldSchema.Type.TIMESTAMP
1365-
&& schemaInformation.getTimestampPrecision() == 12) {
1367+
&& schemaInformation.getTimestampPrecision() == PICOSECOND_PRECISION) {
13661368

13671369
long seconds;
13681370
long picoseconds;

0 commit comments

Comments
 (0)