== Abstract Syntax Tree ==
LogicalSink(table=[fluss.nexmark.output_855fcdf312d44dca959d1044879e558a], fields=[category, EXPR$1])
+- LogicalAggregate(group=[{0}], EXPR$1=[AVG($1)])
   +- LogicalProject(category=[$1], final=[$0])
      +- LogicalProject(final=[$2], category=[$1])
         +- LogicalAggregate(group=[{0, 1}], final=[MAX($2)])
            +- LogicalProject(id=[$0], category=[$8], price=[$12])
               +- LogicalFilter(condition=[AND(=($0, $10), >=($15, $5), <=($15, $6))])
                  +- LogicalJoin(condition=[true], joinType=[inner])
                     :- LogicalProject(id=[$2.id], itemName=[$2.itemName], description=[$2.description], initialBid=[$2.initialBid], reserve=[$2.reserve], dateTime=[$5], expires=[TO_TIMESTAMP_LTZ($2.expires, 3)], seller=[$2.seller], category=[$2.category], extra=[$2.extra])
                     :  +- LogicalFilter(condition=[=($0, 1)])
                     :     +- LogicalProject(event_type=[$0], person=[$1], auction=[$2], bid=[$3], dateTime=[$4], rowtime=[$5])
                     :        +- LogicalWatermarkAssigner(rowtime=[rowtime], watermark=[-($5, 4000:INTERVAL SECOND)])
                     :           +- LogicalProject(event_type=[$0], person=[$1], auction=[$2], bid=[$3], dateTime=[$4], rowtime=[TO_TIMESTAMP_LTZ($4, 3)])
                     :              +- LogicalTableScan(table=[[fluss, nexmark, events]])
                     +- LogicalProject(auction=[$3.auction], bidder=[$3.bidder], price=[$3.price], channel=[$3.channel], url=[$3.url], dateTime=[$5], extra=[$3.extra])
                        +- LogicalFilter(condition=[=($0, 2)])
                           +- LogicalProject(event_type=[$0], person=[$1], auction=[$2], bid=[$3], dateTime=[$4], rowtime=[$5])
                              +- LogicalWatermarkAssigner(rowtime=[rowtime], watermark=[-($5, 4000:INTERVAL SECOND)])
                                 +- LogicalProject(event_type=[$0], person=[$1], auction=[$2], bid=[$3], dateTime=[$4], rowtime=[TO_TIMESTAMP_LTZ($4, 3)])
                                    +- LogicalTableScan(table=[[fluss, nexmark, events]])

== Optimized Physical Plan ==
Sink(table=[fluss.nexmark.output_855fcdf312d44dca959d1044879e558a], fields=[category, EXPR$1])
+- ArrowToRowData(reuseBarrier=[700])
   +- NativeColumnarGroupAggregate(reuseBarrier=[699])
      +- NativeColumnarExchange(reuseBarrier=[698])
         +- NativeCalc(reuseBarrier=[697])
            +- NativeColumnarGroupAggregate(reuseBarrier=[696])
               +- NativeColumnarExchange(reuseBarrier=[695])
                  +- NativeCalc(reuseBarrier=[694])
                     +- NativeColumnarUpdatingJoin(reuseBarrier=[693], leftJoinKeyUnique=[false], rightJoinKeyUnique=[false])
                        :- NativeColumnarExchange(reuseBarrier=[677])
                        :  +- NativeCalc(reuseBarrier=[676])
                        :     +- NativeCalc(reuseBarrier=[675])
                        :        +- NativeShare(consumers=[2], shareToken=[673])
                        :           +- NativeFlussSource(table=[nexmark.events], shareToken=[673])
                        +- NativeColumnarExchange(reuseBarrier=[692])
                           +- NativeCalc(reuseBarrier=[691])
                              +- NativeCalc(reuseBarrier=[690])
                                 +- NativeShare(consumers=[2], shareToken=[673])
                                    +- NativeFlussSource(table=[nexmark.events], shareToken=[673])

== Optimized Execution Plan ==
Sink(table=[fluss.nexmark.output_855fcdf312d44dca959d1044879e558a], fields=[category, EXPR$1])
+- ArrowToRowData
   +- NativeColumnarGroupAggregate
      +- NativeColumnarExchange
         +- NativeCalc
            +- NativeColumnarGroupAggregate
               +- NativeColumnarExchange
                  +- NativeCalc
                     +- NativeColumnarUpdatingJoin(leftJoinKeyUnique=[false], rightJoinKeyUnique=[false])
                        :- NativeColumnarExchange
                        :  +- NativeCalc
                        :     +- NativeCalc
                        :        +- NativeShare(consumers=[2])(reuse_id=[1])
                        :           +- NativeFlussSource(table=[nexmark.events])
                        +- NativeColumnarExchange
                           +- NativeCalc
                              +- NativeCalc
                                 +- Reused(reference_id=[1])

== Physical Execution Plan ==
{
  "nodes" : [ {
    "id" : 877,
    "type" : "Source: native-fluss-source",
    "pact" : "Data Source",
    "contents" : "Source: native-fluss-source",
    "parallelism" : 4
  }, {
    "id" : 878,
    "type" : "NativeShareExecNode[582]",
    "pact" : "Operator",
    "contents" : "[582]:NativeShare(consumers=[2])",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 877,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 879,
    "type" : "NativeCalcExecNode[583]",
    "pact" : "Operator",
    "contents" : "[583]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 878,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 880,
    "type" : "NativeCalcExecNode[584]",
    "pact" : "Operator",
    "contents" : "[584]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 879,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 881,
    "type" : "NativeColumnarExchangeExecNode[585]",
    "pact" : "Operator",
    "contents" : "[585]:NativeColumnarExchange",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 880,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 883,
    "type" : "NativeCalcExecNode[586]",
    "pact" : "Operator",
    "contents" : "[586]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 878,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 884,
    "type" : "NativeCalcExecNode[587]",
    "pact" : "Operator",
    "contents" : "[587]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 883,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 885,
    "type" : "NativeColumnarExchangeExecNode[588]",
    "pact" : "Operator",
    "contents" : "[588]:NativeColumnarExchange",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 884,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 887,
    "type" : "NativeColumnarUpdatingJoinExecNode[589]",
    "pact" : "Operator",
    "contents" : "[589]:NativeColumnarUpdatingJoin(leftJoinKeyUnique=[false], rightJoinKeyUnique=[false])",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 881,
      "ship_strategy" : "columnar-key-group",
      "side" : "second"
    }, {
      "id" : 885,
      "ship_strategy" : "columnar-key-group",
      "side" : "second"
    } ]
  }, {
    "id" : 888,
    "type" : "NativeCalcExecNode[590]",
    "pact" : "Operator",
    "contents" : "[590]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 887,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 889,
    "type" : "NativeColumnarExchangeExecNode[591]",
    "pact" : "Operator",
    "contents" : "[591]:NativeColumnarExchange",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 888,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 891,
    "type" : "NativeColumnarGroupAggExecNode[592]",
    "pact" : "Operator",
    "contents" : "[592]:NativeColumnarGroupAggregate",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 889,
      "ship_strategy" : "columnar-key-group",
      "side" : "second"
    } ]
  }, {
    "id" : 892,
    "type" : "NativeCalcExecNode[593]",
    "pact" : "Operator",
    "contents" : "[593]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 891,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 893,
    "type" : "NativeColumnarExchangeExecNode[594]",
    "pact" : "Operator",
    "contents" : "[594]:NativeColumnarExchange",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 892,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 895,
    "type" : "NativeColumnarGroupAggExecNode[595]",
    "pact" : "Operator",
    "contents" : "[595]:NativeColumnarGroupAggregate",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 893,
      "ship_strategy" : "columnar-key-group",
      "side" : "second"
    } ]
  }, {
    "id" : 896,
    "type" : "ArrowToRowDataExecNode[596]",
    "pact" : "Operator",
    "contents" : "[596]:ArrowToRowData",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 895,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 897,
    "type" : "ConstraintEnforcer[597]",
    "pact" : "Operator",
    "contents" : "[597]:ConstraintEnforcer[NotNullEnforcer(fields=[id])]",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 896,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 905,
    "type" : "Sink(nexmark.output_855fcdf312d44dca959d1044879e558a): Writer",
    "pact" : "Operator",
    "contents" : "Sink(nexmark.output_855fcdf312d44dca959d1044879e558a): Writer",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 897,
      "ship_strategy" : "BUCKET",
      "side" : "second"
    } ]
  } ]
}