All files / src/abap/2_statements/expressions select.ts

100% Statements 22/22
100% Branches 1/1
100% Functions 1/1
100% Lines 22/22

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 231x 1x 1x 1x 1x 1x 1x 1x 1x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 1x  
import {seq, Expression, altPrio, optPrio, plusPrio, ver, AlsoIn, verNotLang} from "../combi";
import {SQLIntoTable, SQLOrderBy, SQLIntoList, SQLSetOp} from ".";
import {Release, LanguageVersion} from "../../../version";
import {IStatementRunnable} from "../statement_runnable";
import {SQLIntoStructure} from "./sql_into_structure";
import {buildSelectCore, buildSelectSingleCore} from "./_select_core";
 
export class Select extends Expression {
  public getRunnable(): IStatementRunnable {
    const into = altPrio(SQLIntoTable, SQLIntoStructure, SQLIntoList);
 
    const standalone = altPrio(
      seq("SINGLE", optPrio(verNotLang(LanguageVersion.KeyUser, "FOR UPDATE")), buildSelectSingleCore(true)),
      buildSelectCore(true),
    );
 
    const unionTail = ver(Release.v750, plusPrio(SQLSetOp), {also: AlsoIn.OpenABAP});
    const chained = seq(buildSelectCore(false, false), unionTail, optPrio(SQLOrderBy), optPrio(into));
 
    return seq("SELECT", altPrio(chained, standalone));
  }
}