Skip to content

Commit 3c0ca5e

Browse files
committed
Add JSON to WriterTarget
1 parent 4ef4152 commit 3c0ca5e

File tree

4 files changed

+610
-31
lines changed

4 files changed

+610
-31
lines changed

presto-spi/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,5 +146,11 @@
146146
<artifactId>commons-math3</artifactId>
147147
<scope>test</scope>
148148
</dependency>
149+
150+
<dependency>
151+
<groupId>javax.inject</groupId>
152+
<artifactId>javax.inject</artifactId>
153+
<scope>test</scope>
154+
</dependency>
149155
</dependencies>
150156
</project>

presto-spi/src/main/java/com/facebook/presto/spi/ColumnMetadata.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public Map<String, Object> getProperties()
8989
{
9090
return properties;
9191
}
92+
9293
public Builder toBuilder()
9394
{
9495
return ColumnMetadata.builder()

presto-spi/src/main/java/com/facebook/presto/spi/plan/TableWriterNode.java

Lines changed: 78 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import com.fasterxml.jackson.annotation.JsonCreator;
2626
import com.fasterxml.jackson.annotation.JsonIgnore;
2727
import com.fasterxml.jackson.annotation.JsonProperty;
28+
import com.fasterxml.jackson.annotation.JsonSubTypes;
29+
import com.fasterxml.jackson.annotation.JsonTypeInfo;
2830
import com.google.errorprone.annotations.Immutable;
2931

3032
import java.util.ArrayList;
@@ -144,7 +146,7 @@ public PlanNode getSource()
144146
return source;
145147
}
146148

147-
@JsonIgnore
149+
@JsonProperty
148150
public Optional<WriterTarget> getTarget()
149151
{
150152
return target;
@@ -276,6 +278,14 @@ public boolean isSingleWriterPerPartitionRequired()
276278

277279
// only used during planning -- will not be serialized
278280
@SuppressWarnings({"EmptyClass", "ClassMayBeInterface"})
281+
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "@type")
282+
@JsonSubTypes({
283+
@JsonSubTypes.Type(value = CreateName.class, name = "createName"),
284+
@JsonSubTypes.Type(value = InsertReference.class, name = "insertReference"),
285+
@JsonSubTypes.Type(value = DeleteHandle.class, name = "deleteHandle"),
286+
@JsonSubTypes.Type(value = RefreshMaterializedViewReference.class, name = "refreshMaterializedView"),
287+
@JsonSubTypes.Type(value = UpdateTarget.class, name = "updateTarget")
288+
})
279289
public abstract static class WriterTarget
280290
{
281291
public abstract ConnectorId getConnectorId();
@@ -296,7 +306,11 @@ public static class CreateName
296306
private final Optional<NewTableLayout> layout;
297307
private final Optional<List<OutputColumnMetadata>> columns;
298308

299-
public CreateName(ConnectorId connectorId, ConnectorTableMetadata tableMetadata, Optional<NewTableLayout> layout, Optional<List<OutputColumnMetadata>> columns)
309+
@JsonCreator
310+
public CreateName(@JsonProperty("connectorId") ConnectorId connectorId,
311+
@JsonProperty("tableMetadata") ConnectorTableMetadata tableMetadata,
312+
@JsonProperty("layout") Optional<NewTableLayout> layout,
313+
@JsonProperty("columns") Optional<List<OutputColumnMetadata>> columns)
300314
{
301315
this.connectorId = requireNonNull(connectorId, "connectorId is null");
302316
this.tableMetadata = requireNonNull(tableMetadata, "tableMetadata is null");
@@ -305,38 +319,42 @@ public CreateName(ConnectorId connectorId, ConnectorTableMetadata tableMetadata,
305319
}
306320

307321
@Override
322+
@JsonIgnore
308323
public ConnectorId getConnectorId()
309324
{
310325
return connectorId;
311326
}
312327

328+
@JsonIgnore
313329
public ConnectorTableMetadata getTableMetadata()
314330
{
315331
return tableMetadata;
316332
}
317333

334+
@JsonIgnore
318335
public Optional<NewTableLayout> getLayout()
319336
{
320337
return layout;
321338
}
322339

323340
@Override
341+
@JsonIgnore
324342
public SchemaTableName getSchemaTableName()
325-
326343
{
327344
return tableMetadata.getTable();
328345
}
329346

330347
@Override
331-
public String toString()
348+
@JsonIgnore
349+
public Optional<List<OutputColumnMetadata>> getOutputColumns()
332350
{
333-
return connectorId + "." + tableMetadata.getTable();
351+
return columns;
334352
}
335353

336354
@Override
337-
public Optional<List<OutputColumnMetadata>> getOutputColumns()
355+
public String toString()
338356
{
339-
return columns;
357+
return connectorId + "." + tableMetadata.getTable();
340358
}
341359
}
342360

@@ -347,31 +365,39 @@ public static class InsertReference
347365
private final SchemaTableName schemaTableName;
348366
private final Optional<List<OutputColumnMetadata>> columns;
349367

350-
public InsertReference(TableHandle handle, SchemaTableName schemaTableName, Optional<List<OutputColumnMetadata>> columns)
368+
@JsonCreator
369+
public InsertReference(
370+
@JsonProperty("handle") TableHandle handle,
371+
@JsonProperty("schemaTableName") SchemaTableName schemaTableName,
372+
@JsonProperty("columns") Optional<List<OutputColumnMetadata>> columns)
351373
{
352374
this.handle = requireNonNull(handle, "handle is null");
353375
this.schemaTableName = requireNonNull(schemaTableName, "schemaTableName is null");
354376
this.columns = requireNonNull(columns, "columns is null");
355377
}
356378

379+
@JsonProperty
357380
public TableHandle getHandle()
358381
{
359382
return handle;
360383
}
361384

362385
@Override
363-
public ConnectorId getConnectorId()
386+
@JsonProperty
387+
public SchemaTableName getSchemaTableName()
364388
{
365-
return handle.getConnectorId();
389+
return schemaTableName;
366390
}
367391

368392
@Override
369-
public SchemaTableName getSchemaTableName()
393+
@JsonIgnore
394+
public ConnectorId getConnectorId()
370395
{
371-
return schemaTableName;
396+
return handle.getConnectorId();
372397
}
373398

374399
@Override
400+
@JsonIgnore
375401
public Optional<List<OutputColumnMetadata>> getOutputColumns()
376402
{
377403
return columns;
@@ -390,32 +416,37 @@ public static class DeleteHandle
390416
private final TableHandle handle;
391417
private final SchemaTableName schemaTableName;
392418

419+
@JsonCreator
393420
public DeleteHandle(
394-
TableHandle handle,
395-
SchemaTableName schemaTableName)
421+
@JsonProperty("handle") TableHandle handle,
422+
@JsonProperty("schemaTableName") SchemaTableName schemaTableName)
396423
{
397424
this.handle = requireNonNull(handle, "handle is null");
398425
this.schemaTableName = requireNonNull(schemaTableName, "schemaTableName is null");
399426
}
400427

428+
@JsonProperty
401429
public TableHandle getHandle()
402430
{
403431
return handle;
404432
}
405433

406434
@Override
407-
public ConnectorId getConnectorId()
435+
@JsonProperty
436+
public SchemaTableName getSchemaTableName()
408437
{
409-
return handle.getConnectorId();
438+
return schemaTableName;
410439
}
411440

412441
@Override
413-
public SchemaTableName getSchemaTableName()
442+
@JsonIgnore
443+
public ConnectorId getConnectorId()
414444
{
415-
return schemaTableName;
445+
return handle.getConnectorId();
416446
}
417447

418448
@Override
449+
@JsonIgnore
419450
public Optional<List<OutputColumnMetadata>> getOutputColumns()
420451
{
421452
return Optional.empty();
@@ -433,30 +464,37 @@ public static class RefreshMaterializedViewReference
433464
private final TableHandle handle;
434465
private final SchemaTableName schemaTableName;
435466

436-
public RefreshMaterializedViewReference(TableHandle handle, SchemaTableName schemaTableName)
467+
@JsonCreator
468+
public RefreshMaterializedViewReference(
469+
@JsonProperty("handle") TableHandle handle,
470+
@JsonProperty("schemaTableName") SchemaTableName schemaTableName)
437471
{
438472
this.handle = requireNonNull(handle, "handle is null");
439473
this.schemaTableName = requireNonNull(schemaTableName, "schemaTableName is null");
440474
}
441475

476+
@JsonProperty
442477
public TableHandle getHandle()
443478
{
444479
return handle;
445480
}
446481

447482
@Override
448-
public ConnectorId getConnectorId()
483+
@JsonProperty
484+
public SchemaTableName getSchemaTableName()
449485
{
450-
return handle.getConnectorId();
486+
return schemaTableName;
451487
}
452488

453489
@Override
454-
public SchemaTableName getSchemaTableName()
490+
@JsonIgnore
491+
public ConnectorId getConnectorId()
455492
{
456-
return schemaTableName;
493+
return handle.getConnectorId();
457494
}
458495

459496
@Override
497+
@JsonIgnore
460498
public Optional<List<OutputColumnMetadata>> getOutputColumns()
461499
{
462500
return Optional.empty();
@@ -477,11 +515,12 @@ public static class UpdateTarget
477515
private final List<String> updatedColumns;
478516
private final List<ColumnHandle> updatedColumnHandles;
479517

518+
@JsonCreator
480519
public UpdateTarget(
481-
TableHandle handle,
482-
SchemaTableName schemaTableName,
483-
List<String> updatedColumns,
484-
List<ColumnHandle> updatedColumnHandles)
520+
@JsonProperty("handle") TableHandle handle,
521+
@JsonProperty("schemaTableName") SchemaTableName schemaTableName,
522+
@JsonProperty("updatedColumns") List<String> updatedColumns,
523+
@JsonProperty("updatedColumnHandles") List<ColumnHandle> updatedColumnHandles)
485524
{
486525
this.handle = requireNonNull(handle, "handle is null");
487526
this.schemaTableName = requireNonNull(schemaTableName, "schemaTableName is null");
@@ -490,32 +529,40 @@ public UpdateTarget(
490529
this.updatedColumnHandles = requireNonNull(updatedColumnHandles, "updatedColumnHandles is null");
491530
}
492531

532+
@JsonProperty
493533
public TableHandle getHandle()
494534
{
495535
return handle;
496536
}
497537

498-
public ConnectorId getConnectorId()
538+
@Override
539+
@JsonProperty
540+
public SchemaTableName getSchemaTableName()
499541
{
500-
return handle.getConnectorId();
542+
return schemaTableName;
501543
}
502544

503-
public SchemaTableName getSchemaTableName()
545+
@Override
546+
@JsonIgnore
547+
public ConnectorId getConnectorId()
504548
{
505-
return schemaTableName;
549+
return handle.getConnectorId();
506550
}
507551

508552
@Override
553+
@JsonIgnore
509554
public Optional<List<OutputColumnMetadata>> getOutputColumns()
510555
{
511556
return Optional.empty();
512557
}
513558

559+
@JsonIgnore
514560
public List<String> getUpdatedColumns()
515561
{
516562
return updatedColumns;
517563
}
518564

565+
@JsonIgnore
519566
public List<ColumnHandle> getUpdatedColumnHandles()
520567
{
521568
return updatedColumnHandles;

0 commit comments

Comments
 (0)