RalfJL commented on issue #12949:
URL: https://github.com/apache/pinot/issues/12949#issuecomment-2079376295
This might have the same root cause and may be easier to debug.
I splitted the freeradius requests into 3 tables. radius_start,
radius_update, radius_stop which obviously contain the Start Stop and
Interim-Update records.
Now the query:
```
select a.acctuniquesessionid, a.acctstatustype, a.ts, b.acctstatustype,
b.ts, (cast(b.ts as BIGINT)-cast(a.ts as BIGINT))/1000 as Zeit from
radius_start a
join radius_stop b
on a.acctuniquesessionid = b.acctuniquesessionid
order by Zeit desc
```
returns 185096 records
The query having a where clause with a subselect:
```
select a.acctuniquesessionid, a.acctstatustype, a.ts, b.acctstatustype,
b.ts, (cast(b.ts as BIGINT)-cast(a.ts as BIGINT))/1000 as Zeit from
radius_start a
join radius_stop b
on a.acctuniquesessionid = b.acctuniquesessionid
where not exists ( select 1 from radius_start c where c.acctuniquesessionid
= a.acctuniquesessionid and c.ts < a.ts)
order by Zeit desc
```
returns 466790 records.
I would have expected less records with the filter than without, right?
And the query plan is interesting:
The first one:
```
Execution Plan
LogicalSort(sort0=[$5], dir0=[DESC])
PinotLogicalSortExchange(distribution=[hash], collation=[[5 DESC]],
isSortOnSender=[false], isSortOnReceiver=[true])
LogicalProject(acctuniquesessionid=[$1], acctstatustype=[$0], ts=[$2],
acctstatustype0=[$4], ts0=[$6], Zeit=[/(-($7, $3), 1000)])
LogicalJoin(condition=[=($1, $5)], joinType=[inner])
PinotLogicalExchange(distribution=[hash[1]])
LogicalProject(acctstatustype=[$12], acctuniquesessionid=[$14],
ts=[$18], EXPR$0=[CAST($18):BIGINT NOT NULL])
LogicalTableScan(table=[[radius_start]])
PinotLogicalExchange(distribution=[hash[1]])
LogicalProject(acctstatustype=[$12], acctuniquesessionid=[$14],
ts=[$18], EXPR$0=[CAST($18):BIGINT NOT NULL])
LogicalTableScan(table=[[radius_stop]])
```
pretty simple and stright forward.
The second one:
```
Execution Plan
LogicalSort(sort0=[$5], dir0=[DESC])
PinotLogicalSortExchange(distribution=[hash], collation=[[5 DESC]],
isSortOnSender=[false], isSortOnReceiver=[true])
LogicalProject(acctuniquesessionid=[$14], acctstatustype=[$12],
ts=[$18], acctstatustype0=[$31], ts0=[$37], Zeit=[/(-(CAST($37):BIGINT NOT
NULL, CAST($18):BIGINT NOT NULL), 1000)])
LogicalFilter(condition=[IS NULL($40)])
LogicalJoin(condition=[AND(=($14, $38), =($18, $39))],
joinType=[left])
PinotLogicalExchange(distribution=[hash[14, 18]])
LogicalJoin(condition=[=($14, $33)], joinType=[inner])
PinotLogicalExchange(distribution=[hash[14]])
LogicalTableScan(table=[[radius_start]])
PinotLogicalExchange(distribution=[hash[14]])
LogicalTableScan(table=[[radius_stop]])
PinotLogicalExchange(distribution=[hash[0, 1]])
LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
PinotLogicalExchange(distribution=[hash[0, 1]])
LogicalAggregate(group=[{0, 1}], agg#0=[MIN($2)])
LogicalProject(acctuniquesessionid0=[$2], ts0=[$3],
$f0=[true])
LogicalJoin(condition=[AND(=($0, $2), <($1, $3))],
joinType=[inner])
PinotLogicalExchange(distribution=[hash[0]])
LogicalProject(acctuniquesessionid=[$14], ts=[$18])
LogicalTableScan(table=[[radius_start]])
PinotLogicalExchange(distribution=[hash[0]])
LogicalAggregate(group=[{0, 1}])
PinotLogicalExchange(distribution=[hash[0, 1]])
LogicalAggregate(group=[{0, 1}])
LogicalJoin(condition=[=($0, $2)],
joinType=[inner])
PinotLogicalExchange(distribution=[hash[0]])
LogicalProject(acctuniquesessionid=[$14],
ts=[$18])
LogicalTableScan(table=[[radius_start]])
PinotLogicalExchange(distribution=[hash[0]])
LogicalProject(acctuniquesessionid=[$14])
LogicalTableScan(table=[[radius_stop]])
```
has 3 additional joins
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]