Skip to content

Commit 85926ce

Browse files
authored
feat(online): union all query (#3590)
* feat(online): union query * refactor: group_and_sort_optimized Re-impl column to source info in physical node, support multiple result source info, previously it is one result only. Multiple source result is required for SetOperationNode, like union all, every input node may produce the target column.
1 parent d1d2e38 commit 85926ce

39 files changed

+1902
-547
lines changed

cases/plan/create.yaml

Lines changed: 96 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -437,44 +437,45 @@ cases:
437437
| +-is_constant: 0
438438
+-inner_node_list[list]:
439439
+-0:
440-
+-node[kQuery]: kQueryUnion
441-
+-union_type: ALL UNION
442-
+-left:
443-
| +-node[kQuery]: kQuerySelect
444-
| +-distinct_opt: false
445-
| +-where_expr: null
446-
| +-group_expr_list: null
447-
| +-having_expr: null
448-
| +-order_expr_list: null
449-
| +-limit: null
450-
| +-select_list[list]:
451-
| | +-0:
452-
| | +-node[kResTarget]
453-
| | +-val:
454-
| | | +-expr[primary]
455-
| | | +-value: 1
456-
| | | +-type: int32
457-
| | +-name: <nil>
458-
| +-tableref_list: []
459-
| +-window_list: []
460-
+-right:
461-
+-node[kQuery]: kQuerySelect
462-
+-distinct_opt: false
463-
+-where_expr: null
464-
+-group_expr_list: null
465-
+-having_expr: null
466-
+-order_expr_list: null
467-
+-limit: null
468-
+-select_list[list]:
469-
| +-0:
470-
| +-node[kResTarget]
471-
| +-val:
472-
| | +-expr[primary]
473-
| | +-value: 2
474-
| | +-type: int32
475-
| +-name: <nil>
476-
+-tableref_list: []
477-
+-window_list: []
440+
+-node[kQuery]: kQuerySetOperation
441+
+-operator: UNION ALL
442+
+-inputs[list]:
443+
+-0:
444+
| +-node[kQuery]: kQuerySelect
445+
| +-distinct_opt: false
446+
| +-where_expr: null
447+
| +-group_expr_list: null
448+
| +-having_expr: null
449+
| +-order_expr_list: null
450+
| +-limit: null
451+
| +-select_list[list]:
452+
| | +-0:
453+
| | +-node[kResTarget]
454+
| | +-val:
455+
| | | +-expr[primary]
456+
| | | +-value: 1
457+
| | | +-type: int32
458+
| | +-name: <nil>
459+
| +-tableref_list: []
460+
| +-window_list: []
461+
+-1:
462+
+-node[kQuery]: kQuerySelect
463+
+-distinct_opt: false
464+
+-where_expr: null
465+
+-group_expr_list: null
466+
+-having_expr: null
467+
+-order_expr_list: null
468+
+-limit: null
469+
+-select_list[list]:
470+
| +-0:
471+
| +-node[kResTarget]
472+
| +-val:
473+
| | +-expr[primary]
474+
| | +-value: 2
475+
| | +-type: int32
476+
| +-name: <nil>
477+
+-tableref_list: []
478+
+-window_list: []
478479
479480
- id: 21_create_procedure
480481
desc: create procedure, parameters and union distinct query
@@ -515,68 +516,63 @@ cases:
515516
| +-is_constant: 0
516517
+-inner_node_list[list]:
517518
+-0:
518-
+-node[kQuery]: kQueryUnion
519-
+-union_type: DISTINCT UNION
520-
+-left:
521-
| +-node[kQuery]: kQueryUnion
522-
| +-union_type: DISTINCT UNION
523-
| +-left:
524-
| | +-node[kQuery]: kQuerySelect
525-
| | +-distinct_opt: false
526-
| | +-where_expr: null
527-
| | +-group_expr_list: null
528-
| | +-having_expr: null
529-
| | +-order_expr_list: null
530-
| | +-limit: null
531-
| | +-select_list[list]:
532-
| | | +-0:
533-
| | | +-node[kResTarget]
534-
| | | +-val:
535-
| | | | +-expr[primary]
536-
| | | | +-value: 1
537-
| | | | +-type: int32
538-
| | | +-name: <nil>
539-
| | +-tableref_list: []
540-
| | +-window_list: []
541-
| +-right:
542-
| +-node[kQuery]: kQuerySelect
543-
| +-distinct_opt: false
544-
| +-where_expr: null
545-
| +-group_expr_list: null
546-
| +-having_expr: null
547-
| +-order_expr_list: null
548-
| +-limit: null
549-
| +-select_list[list]:
550-
| | +-0:
551-
| | +-node[kResTarget]
552-
| | +-val:
553-
| | | +-expr[primary]
554-
| | | +-value: 2
555-
| | | +-type: int32
556-
| | +-name: <nil>
557-
| +-tableref_list: []
558-
| +-window_list: []
559-
+-right:
560-
+-node[kQuery]: kQuerySelect
561-
+-distinct_opt: false
562-
+-where_expr: null
563-
+-group_expr_list: null
564-
+-having_expr: null
565-
+-order_expr_list: null
566-
+-limit: null
567-
+-select_list[list]:
568-
| +-0:
569-
| +-node[kResTarget]
570-
| +-val:
571-
| | +-expr[primary]
572-
| | +-value: 3
573-
| | +-type: int32
574-
| +-name: <nil>
575-
+-tableref_list: []
576-
+-window_list: []
577-
578-
579-
519+
+-node[kQuery]: kQuerySetOperation
520+
+-operator: UNION DISTINCT
521+
+-inputs[list]:
522+
+-0:
523+
| +-node[kQuery]: kQuerySelect
524+
| +-distinct_opt: false
525+
| +-where_expr: null
526+
| +-group_expr_list: null
527+
| +-having_expr: null
528+
| +-order_expr_list: null
529+
| +-limit: null
530+
| +-select_list[list]:
531+
| | +-0:
532+
| | +-node[kResTarget]
533+
| | +-val:
534+
| | | +-expr[primary]
535+
| | | +-value: 1
536+
| | | +-type: int32
537+
| | +-name: <nil>
538+
| +-tableref_list: []
539+
| +-window_list: []
540+
+-1:
541+
| +-node[kQuery]: kQuerySelect
542+
| +-distinct_opt: false
543+
| +-where_expr: null
544+
| +-group_expr_list: null
545+
| +-having_expr: null
546+
| +-order_expr_list: null
547+
| +-limit: null
548+
| +-select_list[list]:
549+
| | +-0:
550+
| | +-node[kResTarget]
551+
| | +-val:
552+
| | | +-expr[primary]
553+
| | | +-value: 2
554+
| | | +-type: int32
555+
| | +-name: <nil>
556+
| +-tableref_list: []
557+
| +-window_list: []
558+
+-2:
559+
+-node[kQuery]: kQuerySelect
560+
+-distinct_opt: false
561+
+-where_expr: null
562+
+-group_expr_list: null
563+
+-having_expr: null
564+
+-order_expr_list: null
565+
+-limit: null
566+
+-select_list[list]:
567+
| +-0:
568+
| +-node[kResTarget]
569+
| +-val:
570+
| | +-expr[primary]
571+
| | +-value: 3
572+
| | +-type: int32
573+
| +-name: <nil>
574+
+-tableref_list: []
575+
+-window_list: []
580576
581577
- id: 22
582578
desc: create index 1

cases/plan/error_request_query.yaml

Lines changed: 0 additions & 22 deletions
This file was deleted.

cases/plan/simple_query.yaml

Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -466,53 +466,54 @@ cases:
466466
SELECT * FROM t1 UNION ALL SELECT * FROM t3 CONFIG ( zone = 'middle' );
467467
expect:
468468
node_tree_str: |
469-
+-node[kQuery]: kQueryUnion
469+
+-node[kQuery]: kQuerySetOperation
470470
+-config_options:
471471
| +-zone:
472472
| +-expr[primary]
473473
| +-value: middle
474474
| +-type: string
475-
+-union_type: ALL UNION
476-
+-left:
477-
| +-node[kQuery]: kQuerySelect
478-
| +-distinct_opt: false
479-
| +-where_expr: null
480-
| +-group_expr_list: null
481-
| +-having_expr: null
482-
| +-order_expr_list: null
483-
| +-limit: null
484-
| +-select_list[list]:
485-
| | +-0:
486-
| | +-node[kResTarget]
487-
| | +-val:
488-
| | | +-expr[all]
489-
| | +-name: <nil>
490-
| +-tableref_list[list]:
491-
| | +-0:
492-
| | +-node[kTableRef]: kTable
493-
| | +-table: t1
494-
| | +-alias: <nil>
495-
| +-window_list: []
496-
+-right:
497-
+-node[kQuery]: kQuerySelect
498-
+-distinct_opt: false
499-
+-where_expr: null
500-
+-group_expr_list: null
501-
+-having_expr: null
502-
+-order_expr_list: null
503-
+-limit: null
504-
+-select_list[list]:
505-
| +-0:
506-
| +-node[kResTarget]
507-
| +-val:
508-
| | +-expr[all]
509-
| +-name: <nil>
510-
+-tableref_list[list]:
511-
| +-0:
512-
| +-node[kTableRef]: kTable
513-
| +-table: t3
514-
| +-alias: <nil>
515-
+-window_list: []
475+
+-operator: UNION ALL
476+
+-inputs[list]:
477+
+-0:
478+
| +-node[kQuery]: kQuerySelect
479+
| +-distinct_opt: false
480+
| +-where_expr: null
481+
| +-group_expr_list: null
482+
| +-having_expr: null
483+
| +-order_expr_list: null
484+
| +-limit: null
485+
| +-select_list[list]:
486+
| | +-0:
487+
| | +-node[kResTarget]
488+
| | +-val:
489+
| | | +-expr[all]
490+
| | +-name: <nil>
491+
| +-tableref_list[list]:
492+
| | +-0:
493+
| | +-node[kTableRef]: kTable
494+
| | +-table: t1
495+
| | +-alias: <nil>
496+
| +-window_list: []
497+
+-1:
498+
+-node[kQuery]: kQuerySelect
499+
+-distinct_opt: false
500+
+-where_expr: null
501+
+-group_expr_list: null
502+
+-having_expr: null
503+
+-order_expr_list: null
504+
+-limit: null
505+
+-select_list[list]:
506+
| +-0:
507+
| +-node[kResTarget]
508+
| +-val:
509+
| | +-expr[all]
510+
| +-name: <nil>
511+
+-tableref_list[list]:
512+
| +-0:
513+
| +-node[kTableRef]: kTable
514+
| +-table: t3
515+
| +-alias: <nil>
516+
+-window_list: []
516517
- id: array
517518
desc: |
518519
array query

0 commit comments

Comments
 (0)