mirror of https://github.com/apache/druid.git
remove druidPrettyprinter
This commit is contained in:
parent
7cfbfdc3ee
commit
0be1f81d7e
|
@ -86,7 +86,7 @@ public class MSQDruidMeta extends DruidMeta
|
|||
}
|
||||
try {
|
||||
String str = objectMapper
|
||||
.writer(new DruidPrettyPrinter())
|
||||
.writerWithDefaultPrettyPrinter()
|
||||
.writeValueAsString(payload.getStages());
|
||||
str = str.replaceAll(taskId, "<taskId>");
|
||||
DruidHook.dispatch(DruidHook.MSQ_PLAN, str);
|
||||
|
|
|
@ -40,23 +40,39 @@ order by 1;
|
|||
"type" : "inputNumber",
|
||||
"inputNumber" : 0
|
||||
},
|
||||
"intervals" : {"type" : "intervals","intervals" : [ "-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z" ]},
|
||||
"intervals" : {
|
||||
"type" : "intervals",
|
||||
"intervals" : [ "-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z" ]
|
||||
},
|
||||
"filter" : {
|
||||
"type" : "inType",
|
||||
"column" : "cityName",
|
||||
"matchValueType" : "STRING",
|
||||
"sortedValues" : [ "Aarhus", "New York" ]
|
||||
},
|
||||
"granularity" : {"type" : "all"},
|
||||
"dimensions" : [ {"type" : "default","dimension" : "cityName","outputName" : "d0","outputType" : "STRING"} ],
|
||||
"granularity" : {
|
||||
"type" : "all"
|
||||
},
|
||||
"dimensions" : [ {
|
||||
"type" : "default",
|
||||
"dimension" : "cityName",
|
||||
"outputName" : "d0",
|
||||
"outputType" : "STRING"
|
||||
} ],
|
||||
"aggregations" : [ {
|
||||
"type" : "filtered",
|
||||
"aggregator" : {"type" : "count","name" : "a0"},
|
||||
"aggregator" : {
|
||||
"type" : "count",
|
||||
"name" : "a0"
|
||||
},
|
||||
"filter" : {
|
||||
"type" : "and",
|
||||
"fields" : [ {
|
||||
"type" : "not",
|
||||
"field" : {"type" : "null","column" : "channel"}
|
||||
"field" : {
|
||||
"type" : "null",
|
||||
"column" : "channel"
|
||||
}
|
||||
}, {
|
||||
"type" : "range",
|
||||
"column" : "delta",
|
||||
|
@ -66,19 +82,33 @@ order by 1;
|
|||
} ]
|
||||
},
|
||||
"name" : "a0"
|
||||
}, {"type" : "count","name" : "a1"} ],
|
||||
"limitSpec" : {"type" : "NoopLimitSpec"},
|
||||
}, {
|
||||
"type" : "count",
|
||||
"name" : "a1"
|
||||
} ],
|
||||
"limitSpec" : {
|
||||
"type" : "NoopLimitSpec"
|
||||
},
|
||||
"context" : {
|
||||
"__user" : null,
|
||||
"finalize" : true,
|
||||
"maxParseExceptions" : 0,
|
||||
"plannerStrategy" : "DECOUPLED",
|
||||
"sqlQueryId" : "1a672bac-af09-4c2b-b7fb-3dec3bf248f5",
|
||||
"sqlQueryId" : "d192187f-8ad1-458d-919e-b07a084156e9",
|
||||
"sqlStringifyArrays" : false
|
||||
}
|
||||
}
|
||||
},
|
||||
"signature" : [ {"name" : "d0","type" : "STRING"}, {"name" : "a0","type" : "LONG"}, {"name" : "a1","type" : "LONG"} ],
|
||||
"signature" : [ {
|
||||
"name" : "d0",
|
||||
"type" : "STRING"
|
||||
}, {
|
||||
"name" : "a0",
|
||||
"type" : "LONG"
|
||||
}, {
|
||||
"name" : "a1",
|
||||
"type" : "LONG"
|
||||
} ],
|
||||
"shuffleSpec" : {
|
||||
"type" : "maxCount",
|
||||
"clusterBy" : {
|
||||
|
@ -97,8 +127,8 @@ order by 1;
|
|||
"partitionCount" : 1,
|
||||
"shuffle" : "globalSort",
|
||||
"output" : "localStorage",
|
||||
"startTime" : "2024-07-24T17:13:03.981Z",
|
||||
"duration" : 692,
|
||||
"startTime" : "2024-07-24T17:16:24.473Z",
|
||||
"duration" : 612,
|
||||
"sort" : true
|
||||
}, {
|
||||
"stageNumber" : 1,
|
||||
|
@ -116,23 +146,39 @@ order by 1;
|
|||
"type" : "inputNumber",
|
||||
"inputNumber" : 0
|
||||
},
|
||||
"intervals" : {"type" : "intervals","intervals" : [ "-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z" ]},
|
||||
"intervals" : {
|
||||
"type" : "intervals",
|
||||
"intervals" : [ "-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z" ]
|
||||
},
|
||||
"filter" : {
|
||||
"type" : "inType",
|
||||
"column" : "cityName",
|
||||
"matchValueType" : "STRING",
|
||||
"sortedValues" : [ "Aarhus", "New York" ]
|
||||
},
|
||||
"granularity" : {"type" : "all"},
|
||||
"dimensions" : [ {"type" : "default","dimension" : "cityName","outputName" : "d0","outputType" : "STRING"} ],
|
||||
"granularity" : {
|
||||
"type" : "all"
|
||||
},
|
||||
"dimensions" : [ {
|
||||
"type" : "default",
|
||||
"dimension" : "cityName",
|
||||
"outputName" : "d0",
|
||||
"outputType" : "STRING"
|
||||
} ],
|
||||
"aggregations" : [ {
|
||||
"type" : "filtered",
|
||||
"aggregator" : {"type" : "count","name" : "a0"},
|
||||
"aggregator" : {
|
||||
"type" : "count",
|
||||
"name" : "a0"
|
||||
},
|
||||
"filter" : {
|
||||
"type" : "and",
|
||||
"fields" : [ {
|
||||
"type" : "not",
|
||||
"field" : {"type" : "null","column" : "channel"}
|
||||
"field" : {
|
||||
"type" : "null",
|
||||
"column" : "channel"
|
||||
}
|
||||
}, {
|
||||
"type" : "range",
|
||||
"column" : "delta",
|
||||
|
@ -142,26 +188,40 @@ order by 1;
|
|||
} ]
|
||||
},
|
||||
"name" : "a0"
|
||||
}, {"type" : "count","name" : "a1"} ],
|
||||
"limitSpec" : {"type" : "NoopLimitSpec"},
|
||||
}, {
|
||||
"type" : "count",
|
||||
"name" : "a1"
|
||||
} ],
|
||||
"limitSpec" : {
|
||||
"type" : "NoopLimitSpec"
|
||||
},
|
||||
"context" : {
|
||||
"__user" : null,
|
||||
"finalize" : true,
|
||||
"maxParseExceptions" : 0,
|
||||
"plannerStrategy" : "DECOUPLED",
|
||||
"sqlQueryId" : "1a672bac-af09-4c2b-b7fb-3dec3bf248f5",
|
||||
"sqlQueryId" : "d192187f-8ad1-458d-919e-b07a084156e9",
|
||||
"sqlStringifyArrays" : false
|
||||
}
|
||||
}
|
||||
},
|
||||
"signature" : [ {"name" : "d0","type" : "STRING"}, {"name" : "a0","type" : "LONG"}, {"name" : "a1","type" : "LONG"} ],
|
||||
"signature" : [ {
|
||||
"name" : "d0",
|
||||
"type" : "STRING"
|
||||
}, {
|
||||
"name" : "a0",
|
||||
"type" : "LONG"
|
||||
}, {
|
||||
"name" : "a1",
|
||||
"type" : "LONG"
|
||||
} ],
|
||||
"maxWorkerCount" : 1
|
||||
},
|
||||
"phase" : "FINISHED",
|
||||
"workerCount" : 1,
|
||||
"partitionCount" : 1,
|
||||
"output" : "localStorage",
|
||||
"startTime" : "2024-07-24T17:13:04.672Z",
|
||||
"startTime" : "2024-07-24T17:16:25.085Z",
|
||||
"duration" : 2
|
||||
} ]
|
||||
!msqPlan
|
||||
|
|
|
@ -21,7 +21,6 @@ package org.apache.druid.java.util.common.granularity;
|
|||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import org.apache.druid.java.util.common.DateTimes;
|
||||
import org.apache.druid.sql.avatica.DruidPrettyPrinter.Inline;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.Interval;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
|
@ -29,7 +28,6 @@ import org.joda.time.format.DateTimeFormatter;
|
|||
/**
|
||||
* AllGranularty buckets everything into a single bucket
|
||||
*/
|
||||
@Inline
|
||||
public class AllGranularity extends Granularity
|
||||
{
|
||||
/**
|
||||
|
|
|
@ -26,7 +26,6 @@ import com.google.common.base.Preconditions;
|
|||
import org.apache.druid.java.util.common.IAE;
|
||||
import org.apache.druid.query.planning.DataSourceAnalysis;
|
||||
import org.apache.druid.segment.SegmentReference;
|
||||
import org.apache.druid.sql.avatica.DruidPrettyPrinter.Inline;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
@ -36,7 +35,6 @@ import java.util.concurrent.atomic.AtomicLong;
|
|||
import java.util.function.Function;
|
||||
|
||||
@JsonTypeName("table")
|
||||
@Inline
|
||||
public class TableDataSource implements DataSource
|
||||
{
|
||||
private final String name;
|
||||
|
|
|
@ -27,7 +27,6 @@ import org.apache.druid.segment.ColumnInspector;
|
|||
import org.apache.druid.segment.ColumnSelectorFactory;
|
||||
import org.apache.druid.segment.column.ColumnType;
|
||||
import org.apache.druid.segment.vector.VectorColumnSelectorFactory;
|
||||
import org.apache.druid.sql.avatica.DruidPrettyPrinter.Inline;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Comparator;
|
||||
|
@ -35,7 +34,6 @@ import java.util.List;
|
|||
|
||||
/**
|
||||
*/
|
||||
@Inline
|
||||
public class CountAggregatorFactory extends AggregatorFactory
|
||||
{
|
||||
private final String name;
|
||||
|
|
|
@ -27,7 +27,6 @@ import org.apache.druid.segment.DimensionSelector;
|
|||
import org.apache.druid.segment.column.ColumnType;
|
||||
import org.apache.druid.segment.vector.MultiValueDimensionVectorSelector;
|
||||
import org.apache.druid.segment.vector.SingleValueDimensionVectorSelector;
|
||||
import org.apache.druid.sql.avatica.DruidPrettyPrinter.Inline;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Objects;
|
||||
|
@ -35,7 +34,6 @@ import java.util.Objects;
|
|||
/**
|
||||
*
|
||||
*/
|
||||
@Inline
|
||||
public class DefaultDimensionSpec implements DimensionSpec
|
||||
{
|
||||
public static DefaultDimensionSpec of(String dimensionName)
|
||||
|
|
|
@ -43,14 +43,12 @@ import org.apache.druid.segment.index.BitmapColumnIndex;
|
|||
import org.apache.druid.segment.index.semantic.DruidPredicateIndexes;
|
||||
import org.apache.druid.segment.index.semantic.NullValueIndex;
|
||||
import org.apache.druid.segment.vector.VectorColumnSelectorFactory;
|
||||
import org.apache.druid.sql.avatica.DruidPrettyPrinter.Inline;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
@Inline
|
||||
public class NullFilter extends AbstractOptimizableDimFilter implements Filter
|
||||
{
|
||||
public static NullFilter forColumn(String column)
|
||||
|
|
|
@ -25,14 +25,12 @@ import com.google.common.base.Functions;
|
|||
import org.apache.druid.java.util.common.guava.Sequence;
|
||||
import org.apache.druid.query.groupby.GroupByQuery;
|
||||
import org.apache.druid.query.groupby.ResultRow;
|
||||
import org.apache.druid.sql.avatica.DruidPrettyPrinter.Inline;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Inline
|
||||
public final class NoopLimitSpec implements LimitSpec
|
||||
{
|
||||
private static final byte CACHE_KEY = 0x0;
|
||||
|
|
|
@ -25,7 +25,6 @@ import org.apache.druid.java.util.common.JodaUtils;
|
|||
import org.apache.druid.query.Query;
|
||||
import org.apache.druid.query.QueryRunner;
|
||||
import org.apache.druid.query.QuerySegmentWalker;
|
||||
import org.apache.druid.sql.avatica.DruidPrettyPrinter.Inline;
|
||||
import org.joda.time.Interval;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -33,7 +32,6 @@ import java.util.Objects;
|
|||
|
||||
/**
|
||||
*/
|
||||
@Inline
|
||||
public class MultipleIntervalSegmentSpec implements QuerySegmentSpec
|
||||
{
|
||||
private final List<Interval> intervals;
|
||||
|
|
|
@ -23,7 +23,6 @@ import com.fasterxml.jackson.annotation.JsonCreator;
|
|||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.apache.druid.java.util.common.IAE;
|
||||
import org.apache.druid.sql.avatica.DruidPrettyPrinter;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
@ -33,8 +32,7 @@ import javax.annotation.Nullable;
|
|||
* Package-private since it is not intended to be used outside that narrow use case. In other cases where passing
|
||||
* around information about column types is important, use {@link ColumnType} instead.
|
||||
*/
|
||||
@DruidPrettyPrinter.Inline
|
||||
public /*FIXME*/ class ColumnSignature
|
||||
class ColumnSignature
|
||||
{
|
||||
private final String name;
|
||||
|
||||
|
|
|
@ -1,112 +0,0 @@
|
|||
/*
|
||||
* 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.druid.sql.avatica;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.core.JsonStreamContext;
|
||||
import com.fasterxml.jackson.core.util.DefaultIndenter;
|
||||
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Druid specific pretty printer which makes it more readable.
|
||||
*/
|
||||
public class DruidPrettyPrinter extends DefaultPrettyPrinter
|
||||
{
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.TYPE})
|
||||
public static @interface Inline
|
||||
{
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private boolean currentIndent = true;
|
||||
|
||||
@Override
|
||||
public DefaultPrettyPrinter createInstance()
|
||||
{
|
||||
return new DruidPrettyPrinter();
|
||||
}
|
||||
|
||||
public DruidPrettyPrinter()
|
||||
{
|
||||
_objectIndenter = new DruidIndenter(this::shouldIndent);
|
||||
}
|
||||
|
||||
public boolean shouldIndent(JsonStreamContext ctx)
|
||||
{
|
||||
return currentIndent ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeStartObject(JsonGenerator g) throws IOException
|
||||
{
|
||||
currentIndent = shouldIndentObject(g.getOutputContext());
|
||||
super.writeStartObject(g);
|
||||
}
|
||||
@Override
|
||||
public void writeEndObject(JsonGenerator g, int nrOfEntries) throws IOException
|
||||
{
|
||||
super.writeEndObject(g, nrOfEntries);
|
||||
currentIndent = true;
|
||||
}
|
||||
|
||||
public boolean shouldIndentObject(JsonStreamContext ctx)
|
||||
{
|
||||
Object value = ctx.getCurrentValue();
|
||||
Object annotation = value.getClass().getAnnotation(Inline.class);
|
||||
if (annotation != null) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static class DruidIndenter implements Indenter
|
||||
{
|
||||
private static final Indenter DEFAULT_INDENTER = DefaultIndenter.SYSTEM_LINEFEED_INSTANCE;
|
||||
|
||||
private java.util.function.Predicate<JsonStreamContext> predicate;
|
||||
|
||||
public DruidIndenter(java.util.function.Predicate<JsonStreamContext> predicate)
|
||||
{
|
||||
this.predicate = predicate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeIndentation(JsonGenerator g, int level) throws IOException
|
||||
{
|
||||
if (predicate.test(g.getOutputContext()) || level < -11) {
|
||||
DEFAULT_INDENTER.writeIndentation(g, level);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInline()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,92 +0,0 @@
|
|||
/*
|
||||
* 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.druid.sql.avatica;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.ObjectWriter;
|
||||
import org.apache.druid.jackson.DefaultObjectMapper;
|
||||
import org.apache.druid.query.groupby.orderby.LimitSpec;
|
||||
import org.apache.druid.query.groupby.orderby.NoopLimitSpec;
|
||||
import org.apache.druid.segment.column.ColumnType;
|
||||
import org.apache.druid.segment.column.RowSignature;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class DruidPrettyPrinterTest
|
||||
{
|
||||
static class TwoInlined
|
||||
{
|
||||
@JsonProperty
|
||||
final LimitSpec limitSpec = NoopLimitSpec.INSTANCE;
|
||||
@JsonProperty
|
||||
final LimitSpec limitSpec2 = NoopLimitSpec.INSTANCE;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void prettyPrintTwoInlined() throws Exception
|
||||
{
|
||||
ObjectMapper om = new DefaultObjectMapper();
|
||||
ObjectWriter w = om.writer(new DruidPrettyPrinter());
|
||||
|
||||
String s = w.writeValueAsString(new TwoInlined());
|
||||
System.out.println(s);
|
||||
|
||||
}
|
||||
|
||||
|
||||
static class SampleClass
|
||||
{
|
||||
@JsonProperty
|
||||
final RowSignature rowSignature;
|
||||
@JsonProperty
|
||||
final LimitSpec limitSpec;
|
||||
@JsonProperty
|
||||
final LimitSpec limitSpec2;
|
||||
|
||||
public SampleClass(RowSignature rs, LimitSpec ls)
|
||||
{
|
||||
this.rowSignature = rs;
|
||||
this.limitSpec = ls;
|
||||
this.limitSpec2 = ls;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void prettyPrint1() throws Exception
|
||||
{
|
||||
|
||||
ObjectMapper om = new DefaultObjectMapper();
|
||||
ObjectWriter w = om.writer(new DruidPrettyPrinter());
|
||||
|
||||
final RowSignature.Builder builder = RowSignature.builder()
|
||||
.add("s", ColumnType.STRING)
|
||||
.add("d", ColumnType.DOUBLE)
|
||||
.add("d1", ColumnType.LONG);
|
||||
|
||||
List<org.apache.druid.segment.column.ColumnSignature> cs = builder.build().asColumnSignatures();
|
||||
|
||||
String s = w.writeValueAsString(new SampleClass(builder.build(), NoopLimitSpec.INSTANCE));
|
||||
System.out.println(s);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,212 +0,0 @@
|
|||
/*
|
||||
* 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.druid.quidem;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.util.DefaultIndenter;
|
||||
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
|
||||
import com.fasterxml.jackson.core.util.MinimalPrettyPrinter;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.ObjectWriter;
|
||||
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
|
||||
import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
|
||||
import org.apache.druid.msq.indexing.report.MSQResultsReport.ColumnAndType;
|
||||
import org.apache.druid.segment.column.ColumnSignature;
|
||||
import org.apache.druid.segment.column.ColumnType;
|
||||
import org.apache.druid.segment.column.RowSignature;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class A11
|
||||
{
|
||||
static class CustomCollapedIntender implements DefaultPrettyPrinter.Indenter
|
||||
{
|
||||
boolean isInside = false;
|
||||
|
||||
@Override
|
||||
public boolean isInline()
|
||||
{
|
||||
return false;// getDelegate().isInline();
|
||||
}
|
||||
|
||||
private DefaultPrettyPrinter.Indenter getDelegate()
|
||||
{
|
||||
if (isInside) {
|
||||
return new DefaultPrettyPrinter.NopIndenter();
|
||||
} else {
|
||||
return DefaultIndenter.SYSTEM_LINEFEED_INSTANCE;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeIndentation(JsonGenerator g, int level) throws IOException
|
||||
{
|
||||
if (isX(g)) {
|
||||
}
|
||||
isInside = isX(g);
|
||||
if (isInside) {
|
||||
int asd = 1;
|
||||
}
|
||||
getDelegate().writeIndentation(g, level);
|
||||
}
|
||||
|
||||
private boolean isX(JsonGenerator g)
|
||||
{
|
||||
Object v = g.getCurrentValue();
|
||||
|
||||
// return v instanceof ColumnSignature;
|
||||
return false;
|
||||
// return v instanceof RowSignature;
|
||||
// return g.getCurrentValue() instanceof List;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class aa extends DefaultPrettyPrinter
|
||||
{
|
||||
|
||||
public aa()
|
||||
{
|
||||
super();
|
||||
_objectIndenter = new CustomCollapedIntender();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultPrettyPrinter createInstance()
|
||||
{
|
||||
return new aa();
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void writeObjectEntrySeparator(JsonGenerator g) throws IOException
|
||||
// {
|
||||
// g.writeRaw(_separators.getObjectEntrySeparator());
|
||||
// _objectIndenter.writeIndentation(g, _nesting);
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void writeStartArray(JsonGenerator g) throws IOException
|
||||
{
|
||||
Object cv = g.getCurrentValue();
|
||||
if (isX(g)) {
|
||||
g.setPrettyPrinter(new MinimalPrettyPrinter());
|
||||
}
|
||||
super.writeStartArray(g);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObjectEntrySeparator(JsonGenerator g) throws IOException
|
||||
{
|
||||
|
||||
super.writeObjectEntrySeparator(g);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeStartObject(JsonGenerator g) throws IOException
|
||||
{
|
||||
super.writeStartObject(g);
|
||||
}
|
||||
|
||||
public void writeEndObject1(JsonGenerator g, int nrOfEntries) throws IOException
|
||||
{
|
||||
Indenter old = _objectIndenter;
|
||||
if (isX(g)) {
|
||||
_objectIndenter = DefaultIndenter.SYSTEM_LINEFEED_INSTANCE;
|
||||
}
|
||||
super.writeEndObject(g, nrOfEntries);
|
||||
if (isX(g)) {
|
||||
_objectIndenter = old;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isX(JsonGenerator g)
|
||||
{
|
||||
Object v = g.getCurrentValue();
|
||||
return v instanceof ColumnSignature;
|
||||
// return g.getCurrentValue() instanceof List;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeEndArray(JsonGenerator g, int nrOfValues) throws IOException
|
||||
{
|
||||
Object cv = g.getCurrentValue();
|
||||
super.writeEndArray(g, nrOfValues);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static class Asd
|
||||
{
|
||||
@JsonProperty
|
||||
int asd = 11;
|
||||
@JsonProperty
|
||||
RowSignature rs;
|
||||
@JsonProperty
|
||||
ColumnAndType or = new ColumnAndType("Asd", ColumnType.DOUBLE);
|
||||
|
||||
Asd()
|
||||
{
|
||||
rs = RowSignature.builder()
|
||||
.add("s", ColumnType.STRING)
|
||||
.add("d", ColumnType.DOUBLE)
|
||||
.add("d1", ColumnType.LONG)
|
||||
.build();
|
||||
asd = 1111;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sdf() throws JsonProcessingException
|
||||
{
|
||||
ObjectMapper om = new ObjectMapper();
|
||||
om.setAnnotationIntrospector(new JacksonAnnotationIntrospector()
|
||||
{
|
||||
@Override
|
||||
public boolean hasIgnoreMarker(final AnnotatedMember m)
|
||||
{
|
||||
List<String> exclusions = Arrays.asList("asd");
|
||||
return exclusions.contains(m.getName()) || super.hasIgnoreMarker(m);
|
||||
}
|
||||
});
|
||||
ObjectWriter w = om.writer(new DefaultPrettyPrinter().withObjectIndenter(new CustomCollapedIntender()));
|
||||
|
||||
final RowSignature.Builder builder = RowSignature.builder()
|
||||
.add("s", ColumnType.STRING)
|
||||
.add("d", ColumnType.DOUBLE)
|
||||
.add("d1", ColumnType.LONG);
|
||||
|
||||
List<org.apache.druid.segment.column.ColumnSignature> cs = builder.build().asColumnSignatures();
|
||||
|
||||
// String s = w.writeValueAsString(builder.build());
|
||||
String s = w.writeValueAsString(new Asd());
|
||||
System.out.println(s);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,201 +0,0 @@
|
|||
/*
|
||||
* 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.druid.quidem;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.util.DefaultIndenter;
|
||||
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
|
||||
import com.fasterxml.jackson.core.util.MinimalPrettyPrinter;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.ObjectWriter;
|
||||
import org.apache.druid.msq.indexing.report.MSQResultsReport.ColumnAndType;
|
||||
import org.apache.druid.segment.column.ColumnSignature;
|
||||
import org.apache.druid.segment.column.ColumnType;
|
||||
import org.apache.druid.segment.column.RowSignature;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public class A12
|
||||
{
|
||||
static class MyIntender implements DefaultPrettyPrinter.Indenter
|
||||
{
|
||||
boolean isInside = false;
|
||||
|
||||
@Override
|
||||
public boolean isInline()
|
||||
{
|
||||
return getDelegate().isInline();
|
||||
}
|
||||
|
||||
private DefaultPrettyPrinter.Indenter getDelegate()
|
||||
{
|
||||
if (isInside) {
|
||||
return DefaultPrettyPrinter.NopIndenter.instance;
|
||||
} else {
|
||||
return DefaultIndenter.SYSTEM_LINEFEED_INSTANCE;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeIndentation(JsonGenerator g, int level) throws IOException
|
||||
{
|
||||
if (isX(g)) {
|
||||
}
|
||||
isInside = isX(g);
|
||||
if (isInside) {
|
||||
int asd = 1;
|
||||
}
|
||||
getDelegate().writeIndentation(g, level);
|
||||
}
|
||||
|
||||
private boolean isX(JsonGenerator g)
|
||||
{
|
||||
Object v = g.getCurrentValue();
|
||||
|
||||
return v instanceof ColumnSignature;
|
||||
// return false;
|
||||
// return v instanceof RowSignature;
|
||||
// return g.getCurrentValue() instanceof List;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static class aa extends DefaultPrettyPrinter
|
||||
{
|
||||
|
||||
public aa()
|
||||
{
|
||||
super();
|
||||
_objectIndenter = new MyIntender();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultPrettyPrinter createInstance()
|
||||
{
|
||||
return new aa();
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void writeObjectEntrySeparator(JsonGenerator g) throws IOException
|
||||
// {
|
||||
// g.writeRaw(_separators.getObjectEntrySeparator());
|
||||
// _objectIndenter.writeIndentation(g, _nesting);
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void writeStartArray(JsonGenerator g) throws IOException
|
||||
{
|
||||
Object cv = g.getCurrentValue();
|
||||
if (isX(g)) {
|
||||
g.setPrettyPrinter(new MinimalPrettyPrinter());
|
||||
}
|
||||
super.writeStartArray(g);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeObjectEntrySeparator(JsonGenerator g) throws IOException
|
||||
{
|
||||
|
||||
super.writeObjectEntrySeparator(g);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeStartObject(JsonGenerator g) throws IOException
|
||||
{
|
||||
super.writeStartObject(g);
|
||||
}
|
||||
|
||||
public void writeEndObject1(JsonGenerator g, int nrOfEntries) throws IOException
|
||||
{
|
||||
Indenter old = _objectIndenter;
|
||||
if(isX(g))
|
||||
{
|
||||
_objectIndenter=DefaultIndenter.SYSTEM_LINEFEED_INSTANCE;
|
||||
}
|
||||
super.writeEndObject(g, nrOfEntries);
|
||||
if(isX(g))
|
||||
{
|
||||
_objectIndenter=old;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isX(JsonGenerator g)
|
||||
{
|
||||
Object v = g.getCurrentValue();
|
||||
return v instanceof ColumnSignature;
|
||||
// return g.getCurrentValue() instanceof List;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeEndArray(JsonGenerator g, int nrOfValues) throws IOException
|
||||
{
|
||||
Object cv = g.getCurrentValue();
|
||||
super.writeEndArray(g, nrOfValues);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static class Asd
|
||||
{
|
||||
@JsonProperty
|
||||
int asd = 11;
|
||||
@JsonProperty
|
||||
RowSignature rs;
|
||||
@JsonProperty
|
||||
ColumnAndType or = new ColumnAndType("Asd", ColumnType.DOUBLE);
|
||||
|
||||
Asd()
|
||||
{
|
||||
rs = RowSignature.builder()
|
||||
.add("s", ColumnType.STRING)
|
||||
.add("d", ColumnType.DOUBLE)
|
||||
.add("d1", ColumnType.LONG)
|
||||
.build();
|
||||
asd = 1111;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sdf() throws JsonProcessingException
|
||||
{
|
||||
ObjectMapper om = new ObjectMapper();
|
||||
ObjectWriter w = om.writer(new aa());
|
||||
|
||||
final RowSignature.Builder builder = RowSignature.builder()
|
||||
.add("s", ColumnType.STRING)
|
||||
.add("d", ColumnType.DOUBLE)
|
||||
.add("d1", ColumnType.LONG);
|
||||
|
||||
List<org.apache.druid.segment.column.ColumnSignature> cs = builder.build().asColumnSignatures();
|
||||
|
||||
// String s = w.writeValueAsString(builder.build());
|
||||
String s = w.writeValueAsString(new Asd());
|
||||
System.out.println(s);
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue