== Abstract Syntax Tree ==
LogicalSink(table=[fluss.nexmark.output_14e1b4473fe24cd89118239e52e761f8], 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_14e1b4473fe24cd89118239e52e761f8], fields=[category, EXPR$1])
+- ArrowToRowData(reuseBarrier=[612])
   +- NativeColumnarGroupAggregate(reuseBarrier=[611])
      +- NativeColumnarExchange(reuseBarrier=[610])
         +- NativeCalc(reuseBarrier=[609])
            +- NativeColumnarGroupAggregate(reuseBarrier=[608])
               +- NativeColumnarExchange(reuseBarrier=[607])
                  +- NativeCalc(reuseBarrier=[606])
                     +- NativeColumnarUpdatingJoin(reuseBarrier=[605], leftJoinKeyUnique=[false], rightJoinKeyUnique=[false])
                        :- NativeColumnarExchange(reuseBarrier=[589])
                        :  +- NativeCalc(reuseBarrier=[588])
                        :     +- NativeCalc(reuseBarrier=[587])
                        :        +- NativeShare(consumers=[2], shareToken=[585])
                        :           +- NativeFlussSource(table=[nexmark.events], shareToken=[585])
                        +- NativeColumnarExchange(reuseBarrier=[604])
                           +- NativeCalc(reuseBarrier=[603])
                              +- NativeCalc(reuseBarrier=[602])
                                 +- NativeShare(consumers=[2], shareToken=[585])
                                    +- NativeFlussSource(table=[nexmark.events], shareToken=[585])

== Optimized Execution Plan ==
Sink(table=[fluss.nexmark.output_14e1b4473fe24cd89118239e52e761f8], 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" : 775,
    "type" : "Source: native-fluss-source",
    "pact" : "Data Source",
    "contents" : "Source: native-fluss-source",
    "parallelism" : 4
  }, {
    "id" : 776,
    "type" : "NativeShareExecNode[520]",
    "pact" : "Operator",
    "contents" : "[520]:NativeShare(consumers=[2])",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 775,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 777,
    "type" : "NativeCalcExecNode[521]",
    "pact" : "Operator",
    "contents" : "[521]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 776,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 778,
    "type" : "NativeCalcExecNode[522]",
    "pact" : "Operator",
    "contents" : "[522]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 777,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 779,
    "type" : "NativeColumnarExchangeExecNode[523]",
    "pact" : "Operator",
    "contents" : "[523]:NativeColumnarExchange",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 778,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 781,
    "type" : "NativeCalcExecNode[524]",
    "pact" : "Operator",
    "contents" : "[524]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 776,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 782,
    "type" : "NativeCalcExecNode[525]",
    "pact" : "Operator",
    "contents" : "[525]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 781,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 783,
    "type" : "NativeColumnarExchangeExecNode[526]",
    "pact" : "Operator",
    "contents" : "[526]:NativeColumnarExchange",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 782,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 785,
    "type" : "NativeColumnarUpdatingJoinExecNode[527]",
    "pact" : "Operator",
    "contents" : "[527]:NativeColumnarUpdatingJoin(leftJoinKeyUnique=[false], rightJoinKeyUnique=[false])",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 779,
      "ship_strategy" : "columnar-key-group",
      "side" : "second"
    }, {
      "id" : 783,
      "ship_strategy" : "columnar-key-group",
      "side" : "second"
    } ]
  }, {
    "id" : 786,
    "type" : "NativeCalcExecNode[528]",
    "pact" : "Operator",
    "contents" : "[528]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 785,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 787,
    "type" : "NativeColumnarExchangeExecNode[529]",
    "pact" : "Operator",
    "contents" : "[529]:NativeColumnarExchange",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 786,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 789,
    "type" : "NativeColumnarGroupAggExecNode[530]",
    "pact" : "Operator",
    "contents" : "[530]:NativeColumnarGroupAggregate",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 787,
      "ship_strategy" : "columnar-key-group",
      "side" : "second"
    } ]
  }, {
    "id" : 790,
    "type" : "NativeCalcExecNode[531]",
    "pact" : "Operator",
    "contents" : "[531]:NativeCalc",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 789,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 791,
    "type" : "NativeColumnarExchangeExecNode[532]",
    "pact" : "Operator",
    "contents" : "[532]:NativeColumnarExchange",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 790,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 793,
    "type" : "NativeColumnarGroupAggExecNode[533]",
    "pact" : "Operator",
    "contents" : "[533]:NativeColumnarGroupAggregate",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 791,
      "ship_strategy" : "columnar-key-group",
      "side" : "second"
    } ]
  }, {
    "id" : 794,
    "type" : "ArrowToRowDataExecNode[534]",
    "pact" : "Operator",
    "contents" : "[534]:ArrowToRowData",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 793,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 795,
    "type" : "ConstraintEnforcer[535]",
    "pact" : "Operator",
    "contents" : "[535]:ConstraintEnforcer[NotNullEnforcer(fields=[id])]",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 794,
      "ship_strategy" : "FORWARD",
      "side" : "second"
    } ]
  }, {
    "id" : 803,
    "type" : "Sink(nexmark.output_14e1b4473fe24cd89118239e52e761f8): Writer",
    "pact" : "Operator",
    "contents" : "Sink(nexmark.output_14e1b4473fe24cd89118239e52e761f8): Writer",
    "parallelism" : 4,
    "predecessors" : [ {
      "id" : 795,
      "ship_strategy" : "BUCKET",
      "side" : "second"
    } ]
  } ]
}