@abaplint/core 2.119.46 → 2.119.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/build/abaplint.d.ts +85 -0
  2. package/build/src/abap/2_statements/expressions/_select_core.js +9 -4
  3. package/build/src/abap/2_statements/expressions/database_connection.js +1 -1
  4. package/build/src/abap/2_statements/expressions/index.js +16 -0
  5. package/build/src/abap/2_statements/expressions/sql_alias_field.js +3 -1
  6. package/build/src/abap/2_statements/expressions/sql_association_entry.js +3 -1
  7. package/build/src/abap/2_statements/expressions/sql_compare.js +1 -1
  8. package/build/src/abap/2_statements/expressions/sql_creating.js +14 -0
  9. package/build/src/abap/2_statements/expressions/sql_creating_columns.js +13 -0
  10. package/build/src/abap/2_statements/expressions/sql_creating_for_scope.js +15 -0
  11. package/build/src/abap/2_statements/expressions/sql_creating_type_spec.js +13 -0
  12. package/build/src/abap/2_statements/expressions/sql_cte_path_prefix.js +13 -0
  13. package/build/src/abap/2_statements/expressions/sql_defining_new_association.js +19 -0
  14. package/build/src/abap/2_statements/expressions/sql_dml_options.js +17 -0
  15. package/build/src/abap/2_statements/expressions/sql_expose_client_as.js +11 -0
  16. package/build/src/abap/2_statements/expressions/sql_extended_result.js +12 -0
  17. package/build/src/abap/2_statements/expressions/sql_field.js +1 -1
  18. package/build/src/abap/2_statements/expressions/sql_field_and_value.js +3 -2
  19. package/build/src/abap/2_statements/expressions/sql_from.js +2 -17
  20. package/build/src/abap/2_statements/expressions/sql_from_body.js +17 -0
  21. package/build/src/abap/2_statements/expressions/sql_from_source.js +3 -2
  22. package/build/src/abap/2_statements/expressions/sql_group_by.js +3 -1
  23. package/build/src/abap/2_statements/expressions/sql_grouping_sets.js +15 -0
  24. package/build/src/abap/2_statements/expressions/sql_indicators.js +18 -0
  25. package/build/src/abap/2_statements/expressions/sql_into_structure.js +3 -1
  26. package/build/src/abap/2_statements/expressions/sql_into_table.js +3 -1
  27. package/build/src/abap/2_statements/expressions/sql_join.js +3 -2
  28. package/build/src/abap/2_statements/expressions/sql_mapping_from_entity.js +12 -0
  29. package/build/src/abap/2_statements/expressions/sql_offset.js +12 -0
  30. package/build/src/abap/2_statements/expressions/sql_options.js +2 -2
  31. package/build/src/abap/2_statements/expressions/sql_order_by.js +5 -1
  32. package/build/src/abap/2_statements/expressions/sql_path_for_entity.js +3 -1
  33. package/build/src/abap/2_statements/expressions/sql_path_join_type.js +4 -1
  34. package/build/src/abap/2_statements/expressions/sql_path_segment.js +2 -1
  35. package/build/src/abap/2_statements/expressions/sql_privileged_access.js +1 -1
  36. package/build/src/abap/2_statements/expressions/sql_provided_by.js +12 -0
  37. package/build/src/abap/2_statements/expressions/sql_source.js +1 -1
  38. package/build/src/abap/2_statements/expressions/sql_typed_literal.js +21 -0
  39. package/build/src/abap/2_statements/statements/delete_database.js +6 -3
  40. package/build/src/abap/2_statements/statements/fetch_next_cursor.js +2 -1
  41. package/build/src/abap/2_statements/statements/index.js +1 -0
  42. package/build/src/abap/2_statements/statements/insert_database.js +7 -4
  43. package/build/src/abap/2_statements/statements/merge_database.js +34 -0
  44. package/build/src/abap/2_statements/statements/modify_database.js +6 -2
  45. package/build/src/abap/2_statements/statements/update_database.js +4 -3
  46. package/build/src/abap/3_structures/structures/normal.js +1 -1
  47. package/build/src/abap/5_syntax/_syntax_input.js +2 -2
  48. package/build/src/abap/5_syntax/expressions/select.js +29 -2
  49. package/build/src/registry.js +1 -1
  50. package/package.json +1 -1
@@ -2621,7 +2621,18 @@ declare namespace Expressions {
2621
2621
  SQLFieldsLoop,
2622
2622
  SQLFields,
2623
2623
  SQLForAllEntries,
2624
+ SQLExtendedResult,
2625
+ SQLCreating,
2626
+ SQLCreatingTypeSpec,
2627
+ SQLCreatingForScope,
2628
+ SQLCreatingColumns,
2629
+ SQLProvidedBy,
2630
+ SQLExposeClientAs,
2631
+ SQLDefiningNewAssociation,
2632
+ SQLCTEPathPrefix,
2633
+ SQLTypedLiteral,
2624
2634
  SQLFromSource,
2635
+ SQLFromBody,
2625
2636
  SQLFrom,
2626
2637
  SQLFunctionInput,
2627
2638
  sqlFunctionDefs,
@@ -2639,6 +2650,8 @@ declare namespace Expressions {
2639
2650
  SQLLocateRegexpr,
2640
2651
  SQLLikeRegexpr,
2641
2652
  SQLGroupBy,
2653
+ SQLGroupingSets,
2654
+ SQLIndicators,
2642
2655
  SQLHaving,
2643
2656
  SQLHints,
2644
2657
  SQLIn,
@@ -2648,7 +2661,10 @@ declare namespace Expressions {
2648
2661
  SQLIntoTable,
2649
2662
  SQLJoin,
2650
2663
  SQLJoinSource,
2664
+ SQLOffset,
2651
2665
  SQLOptions,
2666
+ SQLDmlOptions,
2667
+ SQLMappingFromEntity,
2652
2668
  SQLPackageSize,
2653
2669
  SQLOrderBy,
2654
2670
  SQLOver,
@@ -4623,6 +4639,10 @@ export declare class MemoryFile extends AbstractFile {
4623
4639
  getRawRows(): string[];
4624
4640
  }
4625
4641
 
4642
+ declare class MergeDatabase implements IStatement {
4643
+ getMatcher(): IStatementRunnable;
4644
+ }
4645
+
4626
4646
  declare class Message {
4627
4647
  private readonly number;
4628
4648
  private readonly message;
@@ -6860,6 +6880,22 @@ declare class SQLCond extends Expression {
6860
6880
  getRunnable(): IStatementRunnable;
6861
6881
  }
6862
6882
 
6883
+ declare class SQLCreating extends Expression {
6884
+ getRunnable(): IStatementRunnable;
6885
+ }
6886
+
6887
+ declare class SQLCreatingColumns extends Expression {
6888
+ getRunnable(): IStatementRunnable;
6889
+ }
6890
+
6891
+ declare class SQLCreatingForScope extends Expression {
6892
+ getRunnable(): IStatementRunnable;
6893
+ }
6894
+
6895
+ declare class SQLCreatingTypeSpec extends Expression {
6896
+ getRunnable(): IStatementRunnable;
6897
+ }
6898
+
6863
6899
  declare class SQLCTEAssociations extends Expression {
6864
6900
  getRunnable(): IStatementRunnable;
6865
6901
  }
@@ -6868,6 +6904,26 @@ declare class SQLCTEHierarchy extends Expression {
6868
6904
  getRunnable(): IStatementRunnable;
6869
6905
  }
6870
6906
 
6907
+ declare class SQLCTEPathPrefix extends Expression {
6908
+ getRunnable(): IStatementRunnable;
6909
+ }
6910
+
6911
+ declare class SQLDefiningNewAssociation extends Expression {
6912
+ getRunnable(): IStatementRunnable;
6913
+ }
6914
+
6915
+ declare class SQLDmlOptions extends Expression {
6916
+ getRunnable(): IStatementRunnable;
6917
+ }
6918
+
6919
+ declare class SQLExposeClientAs extends Expression {
6920
+ getRunnable(): IStatementRunnable;
6921
+ }
6922
+
6923
+ declare class SQLExtendedResult extends Expression {
6924
+ getRunnable(): IStatementRunnable;
6925
+ }
6926
+
6871
6927
  declare class SQLField extends Expression {
6872
6928
  getRunnable(): IStatementRunnable;
6873
6929
  }
@@ -6908,6 +6964,10 @@ declare class SQLFrom extends Expression {
6908
6964
  getRunnable(): IStatementRunnable;
6909
6965
  }
6910
6966
 
6967
+ declare class SQLFromBody extends Expression {
6968
+ getRunnable(): IStatementRunnable;
6969
+ }
6970
+
6911
6971
  declare class SQLFromSource extends Expression {
6912
6972
  getRunnable(): IStatementRunnable;
6913
6973
  }
@@ -6928,6 +6988,10 @@ declare class SQLGroupBy extends Expression {
6928
6988
  getRunnable(): IStatementRunnable;
6929
6989
  }
6930
6990
 
6991
+ declare class SQLGroupingSets extends Expression {
6992
+ getRunnable(): IStatementRunnable;
6993
+ }
6994
+
6931
6995
  declare class SQLHaving extends Expression {
6932
6996
  getRunnable(): IStatementRunnable;
6933
6997
  }
@@ -6952,6 +7016,10 @@ declare class SQLIn extends Expression {
6952
7016
  getRunnable(): IStatementRunnable;
6953
7017
  }
6954
7018
 
7019
+ declare class SQLIndicators extends Expression {
7020
+ getRunnable(): IStatementRunnable;
7021
+ }
7022
+
6955
7023
  declare class SQLIntoList extends Expression {
6956
7024
  getRunnable(): IStatementRunnable;
6957
7025
  }
@@ -6980,6 +7048,10 @@ declare class SQLLocateRegexpr extends Expression {
6980
7048
  getRunnable(): IStatementRunnable;
6981
7049
  }
6982
7050
 
7051
+ declare class SQLMappingFromEntity extends Expression {
7052
+ getRunnable(): IStatementRunnable;
7053
+ }
7054
+
6983
7055
  declare type SQLNamedFunctionDef = [string, ABAPRelease, SQLNamedParam[]];
6984
7056
 
6985
7057
  declare const sqlNamedFunctionDefs: SQLNamedFunctionDef[];
@@ -6996,6 +7068,10 @@ declare class SQLOccurrencesRegexpr extends Expression {
6996
7068
  getRunnable(): IStatementRunnable;
6997
7069
  }
6998
7070
 
7071
+ declare class SQLOffset extends Expression {
7072
+ getRunnable(): IStatementRunnable;
7073
+ }
7074
+
6999
7075
  declare class SQLOptions extends Expression {
7000
7076
  getRunnable(): IStatementRunnable;
7001
7077
  }
@@ -7038,6 +7114,10 @@ declare class SQLPrivilegedAccess extends Expression {
7038
7114
  getRunnable(): IStatementRunnable;
7039
7115
  }
7040
7116
 
7117
+ declare class SQLProvidedBy extends Expression {
7118
+ getRunnable(): IStatementRunnable;
7119
+ }
7120
+
7041
7121
  declare class SQLRegexprFrom extends Expression {
7042
7122
  getRunnable(): IStatementRunnable;
7043
7123
  }
@@ -7090,6 +7170,10 @@ declare class SQLTarget extends Expression {
7090
7170
  getRunnable(): IStatementRunnable;
7091
7171
  }
7092
7172
 
7173
+ declare class SQLTypedLiteral extends Expression {
7174
+ getRunnable(): IStatementRunnable;
7175
+ }
7176
+
7093
7177
  declare class SQLUpTo extends Expression {
7094
7178
  getRunnable(): IStatementRunnable;
7095
7179
  }
@@ -7279,6 +7363,7 @@ declare namespace Statements {
7279
7363
  InsertFieldGroup,
7280
7364
  UpdateDatabase,
7281
7365
  ModifyDatabase,
7366
+ MergeDatabase,
7282
7367
  ModifyInternal,
7283
7368
  Raise,
7284
7369
  Define_2 as Define,
@@ -7,19 +7,22 @@ const _1 = require(".");
7
7
  const version_1 = require("../../../version");
8
8
  const sql_group_by_1 = require("./sql_group_by");
9
9
  const sql_into_structure_1 = require("./sql_into_structure");
10
+ const sql_offset_1 = require("./sql_offset");
10
11
  const sql_up_to_1 = require("./sql_up_to");
11
12
  function buildSelectSingleCore(allowInto = false) {
12
13
  const where = (0, combi_1.seq)("WHERE", _1.SQLCond);
13
14
  const sqlFields = (0, combi_1.ver)(version_1.Release.v750, _1.SQLFields, { also: combi_1.AlsoIn.OpenABAP });
14
15
  const privileged = (0, combi_1.ver)(version_1.Release.v758, _1.SQLPrivilegedAccess);
15
16
  const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
17
+ const extResult = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v766, _1.SQLExtendedResult));
18
+ const creating = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v750, _1.SQLCreating));
16
19
  const client = (0, combi_1.optPrio)(_1.SQLClient);
17
20
  const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
18
21
  const conn = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, _1.DatabaseConnection));
19
22
  const whereClause = (0, combi_1.optPrio)(where);
20
23
  const groupHaving = (0, combi_1.seq)((0, combi_1.optPrio)(sql_group_by_1.SQLGroupBy), (0, combi_1.optPrio)(_1.SQLHaving));
21
24
  const trailingOpts = (0, combi_1.seq)(conn, (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
22
- const intoSingle = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
25
+ const intoSingle = (0, combi_1.seq)((0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList), extResult, creating);
23
26
  if (!allowInto) {
24
27
  const singleBody = (0, combi_1.seq)(_1.SQLFrom, client, byp, whereClause, groupHaving, trailingOpts);
25
28
  return (0, combi_1.seq)(fieldList, singleBody);
@@ -30,10 +33,12 @@ function buildSelectSingleCore(allowInto = false) {
30
33
  }
31
34
  function buildSelectCore(allowInto = false, allowOrderBy = true) {
32
35
  const where = (0, combi_1.seq)("WHERE", _1.SQLCond);
33
- const offset = (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)("OFFSET", _1.SQLSource));
36
+ const offset = (0, combi_1.ver)(version_1.Release.v751, sql_offset_1.SQLOffset);
34
37
  const sqlFields = (0, combi_1.ver)(version_1.Release.v750, _1.SQLFields, { also: combi_1.AlsoIn.OpenABAP });
35
38
  const privileged = (0, combi_1.ver)(version_1.Release.v758, _1.SQLPrivilegedAccess);
36
39
  const fieldList = (0, combi_1.optPrio)(_1.SQLFieldList);
40
+ const extResult = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v766, _1.SQLExtendedResult));
41
+ const creating = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v750, _1.SQLCreating));
37
42
  const client = (0, combi_1.optPrio)(_1.SQLClient);
38
43
  const byp = (0, combi_1.optPrio)(_1.SQLBypassingBuffer);
39
44
  const conn = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, _1.DatabaseConnection));
@@ -44,8 +49,8 @@ function buildSelectCore(allowInto = false, allowOrderBy = true) {
44
49
  ? [(0, combi_1.optPrio)((0, combi_1.seq)(_1.SQLOrderBy, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), (0, combi_1.optPrio)(offset)))]
45
50
  : [];
46
51
  const trailingOpts = (0, combi_1.seq)(conn, (0, combi_1.optPrio)(_1.SQLHints), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(_1.SQLOptions));
47
- const intoSingle = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
48
- const intoForPackSize = _1.SQLIntoTable;
52
+ const intoSingle = (0, combi_1.seq)((0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList), extResult, creating);
53
+ const intoForPackSize = (0, combi_1.seq)(_1.SQLIntoTable, extResult, creating);
49
54
  if (!allowInto) {
50
55
  const afterFromNoInto = (0, combi_1.seq)(_1.SQLFrom, client, byp, (0, combi_1.seq)((0, combi_1.optPrio)(sqlFields), fae, whereClause, groupHaving, ...orderUpOff, trailingOpts));
51
56
  return (0, combi_1.altPrio)((0, combi_1.seq)("SINGLE", buildSelectSingleCore(false)), (0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), fieldList, byp, afterFromNoInto));
@@ -6,7 +6,7 @@ const _1 = require(".");
6
6
  class DatabaseConnection extends combi_1.Expression {
7
7
  getRunnable() {
8
8
  const name = (0, combi_1.regex)(/[\w\/]+/);
9
- return (0, combi_1.seq)("CONNECTION", (0, combi_1.altPrio)(name, _1.Dynamic));
9
+ return (0, combi_1.seq)("CONNECTION", (0, combi_1.altPrio)(name, _1.ConstantString, _1.Dynamic));
10
10
  }
11
11
  }
12
12
  exports.DatabaseConnection = DatabaseConnection;
@@ -201,7 +201,18 @@ __exportStar(require("./sql_field"), exports);
201
201
  __exportStar(require("./sql_fields_loop"), exports);
202
202
  __exportStar(require("./sql_fields"), exports);
203
203
  __exportStar(require("./sql_for_all_entries"), exports);
204
+ __exportStar(require("./sql_extended_result"), exports);
205
+ __exportStar(require("./sql_creating"), exports);
206
+ __exportStar(require("./sql_creating_type_spec"), exports);
207
+ __exportStar(require("./sql_creating_for_scope"), exports);
208
+ __exportStar(require("./sql_creating_columns"), exports);
209
+ __exportStar(require("./sql_provided_by"), exports);
210
+ __exportStar(require("./sql_expose_client_as"), exports);
211
+ __exportStar(require("./sql_defining_new_association"), exports);
212
+ __exportStar(require("./sql_cte_path_prefix"), exports);
213
+ __exportStar(require("./sql_typed_literal"), exports);
204
214
  __exportStar(require("./sql_from_source"), exports);
215
+ __exportStar(require("./sql_from_body"), exports);
205
216
  __exportStar(require("./sql_from"), exports);
206
217
  __exportStar(require("./sql_function_input"), exports);
207
218
  __exportStar(require("./sql_function"), exports);
@@ -215,6 +226,8 @@ __exportStar(require("./sql_substring_regexpr"), exports);
215
226
  __exportStar(require("./sql_locate_regexpr"), exports);
216
227
  __exportStar(require("./sql_like_regexpr"), exports);
217
228
  __exportStar(require("./sql_group_by"), exports);
229
+ __exportStar(require("./sql_grouping_sets"), exports);
230
+ __exportStar(require("./sql_indicators"), exports);
218
231
  __exportStar(require("./sql_having"), exports);
219
232
  __exportStar(require("./sql_hints"), exports);
220
233
  __exportStar(require("./sql_in"), exports);
@@ -224,7 +237,10 @@ __exportStar(require("./sql_field_list_loop_greedy"), exports);
224
237
  __exportStar(require("./sql_into_table"), exports);
225
238
  __exportStar(require("./sql_join"), exports);
226
239
  __exportStar(require("./sql_join_source"), exports);
240
+ __exportStar(require("./sql_offset"), exports);
227
241
  __exportStar(require("./sql_options"), exports);
242
+ __exportStar(require("./sql_dml_options"), exports);
243
+ __exportStar(require("./sql_mapping_from_entity"), exports);
228
244
  __exportStar(require("./sql_package_size"), exports);
229
245
  __exportStar(require("./sql_order_by"), exports);
230
246
  __exportStar(require("./sql_over"), exports);
@@ -5,7 +5,9 @@ const tokens_1 = require("../../1_lexer/tokens");
5
5
  const combi_1 = require("../combi");
6
6
  class SQLAliasField extends combi_1.Expression {
7
7
  getRunnable() {
8
- return (0, combi_1.seq)((0, combi_1.regex)(/^(\/\w+\/)?\w+~(\/\w+\/)?\w+$/), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^\w+$/))));
8
+ const aliasField = (0, combi_1.regex)(/^(\/\w+\/)?\w+~(\/\w+\/)?\w+$/);
9
+ const ctePrefixedAliasField = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), aliasField);
10
+ return (0, combi_1.seq)((0, combi_1.altPrio)(ctePrefixedAliasField, aliasField), (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^\w+$/))));
9
11
  }
10
12
  }
11
13
  exports.SQLAliasField = SQLAliasField;
@@ -4,6 +4,7 @@ exports.SQLAssociationEntry = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const sql_as_name_1 = require("./sql_as_name");
6
6
  const sql_path_for_entity_1 = require("./sql_path_for_entity");
7
+ const sql_defining_new_association_1 = require("./sql_defining_new_association");
7
8
  const with_name_1 = require("./with_name");
8
9
  const database_table_1 = require("./database_table");
9
10
  const version_1 = require("../../../version");
@@ -11,7 +12,8 @@ class SQLAssociationEntry extends combi_1.Expression {
11
12
  getRunnable() {
12
13
  const alias = (0, combi_1.seq)("AS", sql_as_name_1.SQLAsName);
13
14
  const redirected = (0, combi_1.seq)("REDIRECTED TO", with_name_1.WithName, "VIA", database_table_1.DatabaseTable);
14
- return (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)(new sql_path_for_entity_1.SQLPathForEntity(), (0, combi_1.optPrio)(alias), (0, combi_1.optPrio)(redirected)));
15
+ const existing = (0, combi_1.seq)(new sql_path_for_entity_1.SQLPathForEntity(), (0, combi_1.optPrio)(alias), (0, combi_1.optPrio)(redirected));
16
+ return (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.altPrio)(new sql_defining_new_association_1.SQLDefiningNewAssociation(), existing));
15
17
  }
16
18
  }
17
19
  exports.SQLAssociationEntry = SQLAssociationEntry;
@@ -21,7 +21,7 @@ class SQLCompare extends combi_1.Expression {
21
21
  const arith = (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/"), _1.SQLFieldName)), { also: combi_1.AlsoIn.OpenABAP });
22
22
  const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));
23
23
  const at = (0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.SimpleSource3, paren)), { also: combi_1.AlsoIn.OpenABAP });
24
- const lhs = (0, combi_1.altPrio)(_1.SQLCase, _1.SQLAggregation, _1.SQLFunction, _1.ConstantString, (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLPathForColumn, _1.SQLFieldName), (0, combi_1.optPrio)(arith)), at);
24
+ const lhs = (0, combi_1.altPrio)(_1.SQLCase, _1.SQLAggregation, _1.SQLFunction, _1.ConstantString, (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLPathForColumn, _1.SQLAliasField, _1.SQLFieldName), (0, combi_1.optPrio)(arith)), at);
25
25
  const rhs = (0, combi_1.altPrio)((0, combi_1.seq)(_1.SQLCompareOperator, (0, combi_1.altPrio)(sub, _1.SQLCase, _1.SQLAggregation, _1.SQLFunction, (0, combi_1.seq)(source, (0, combi_1.optPrio)(arith)))), (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)(_1.SQLIn, like, between)), sql_like_regexpr_1.SQLLikeRegexpr, nul);
26
26
  const rett = (0, combi_1.seq)(lhs, rhs);
27
27
  const exists = (0, combi_1.seq)("EXISTS", (0, combi_1.altPrio)(subSelect, simpleSubSelect));
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLCreating = void 0;
4
+ const combi_1 = require("../combi");
5
+ const sql_creating_type_spec_1 = require("./sql_creating_type_spec");
6
+ const dynamic_1 = require("./dynamic");
7
+ class SQLCreating extends combi_1.Expression {
8
+ getRunnable() {
9
+ const typeSpecs = (0, combi_1.seq)(sql_creating_type_spec_1.SQLCreatingTypeSpec, (0, combi_1.starPrio)(sql_creating_type_spec_1.SQLCreatingTypeSpec));
10
+ return (0, combi_1.seq)("CREATING", (0, combi_1.altPrio)(dynamic_1.Dynamic, typeSpecs));
11
+ }
12
+ }
13
+ exports.SQLCreating = SQLCreating;
14
+ //# sourceMappingURL=sql_creating.js.map
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLCreatingColumns = void 0;
4
+ const combi_1 = require("../combi");
5
+ const sql_field_name_1 = require("./sql_field_name");
6
+ class SQLCreatingColumns extends combi_1.Expression {
7
+ getRunnable() {
8
+ const guard = (0, combi_1.seq)((0, combi_1.stopBefore)("LOCATOR", "FOR"), (0, combi_1.stopBefore)("READER", "FOR"));
9
+ return (0, combi_1.seq)("COLUMNS", sql_field_name_1.SQLFieldName, (0, combi_1.starPrio)((0, combi_1.seq)(guard, (0, combi_1.optPrio)(","), sql_field_name_1.SQLFieldName)));
10
+ }
11
+ }
12
+ exports.SQLCreatingColumns = SQLCreatingColumns;
13
+ //# sourceMappingURL=sql_creating_columns.js.map
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLCreatingForScope = void 0;
4
+ const combi_1 = require("../combi");
5
+ const sql_creating_columns_1 = require("./sql_creating_columns");
6
+ class SQLCreatingForScope extends combi_1.Expression {
7
+ getRunnable() {
8
+ const forAllOther = (0, combi_1.seq)("FOR ALL OTHER", (0, combi_1.altPrio)("BLOB COLUMNS", "CLOB COLUMNS", "COLUMNS"));
9
+ const forAll = (0, combi_1.seq)("FOR ALL", (0, combi_1.altPrio)("BLOB COLUMNS", "CLOB COLUMNS", "COLUMNS"));
10
+ const forColumns = (0, combi_1.seq)("FOR", sql_creating_columns_1.SQLCreatingColumns);
11
+ return (0, combi_1.altPrio)(forAllOther, forAll, forColumns);
12
+ }
13
+ }
14
+ exports.SQLCreatingForScope = SQLCreatingForScope;
15
+ //# sourceMappingURL=sql_creating_for_scope.js.map
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLCreatingTypeSpec = void 0;
4
+ const combi_1 = require("../combi");
5
+ const sql_creating_for_scope_1 = require("./sql_creating_for_scope");
6
+ class SQLCreatingTypeSpec extends combi_1.Expression {
7
+ getRunnable() {
8
+ const kind = (0, combi_1.altPrio)("LOCATOR", "READER");
9
+ return (0, combi_1.seq)(kind, sql_creating_for_scope_1.SQLCreatingForScope);
10
+ }
11
+ }
12
+ exports.SQLCreatingTypeSpec = SQLCreatingTypeSpec;
13
+ //# sourceMappingURL=sql_creating_type_spec.js.map
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLCTEPathPrefix = void 0;
4
+ const combi_1 = require("../combi");
5
+ const tokens_1 = require("../../1_lexer/tokens");
6
+ class SQLCTEPathPrefix extends combi_1.Expression {
7
+ getRunnable() {
8
+ const tildeIdent = (0, combi_1.regex)(/^\w+~$/);
9
+ return (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), tildeIdent), tildeIdent);
10
+ }
11
+ }
12
+ exports.SQLCTEPathPrefix = SQLCTEPathPrefix;
13
+ //# sourceMappingURL=sql_cte_path_prefix.js.map
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLDefiningNewAssociation = void 0;
4
+ const combi_1 = require("../combi");
5
+ const sql_as_name_1 = require("./sql_as_name");
6
+ const sql_cond_1 = require("./sql_cond");
7
+ const sql_path_join_type_1 = require("./sql_path_join_type");
8
+ const database_table_1 = require("./database_table");
9
+ const with_name_1 = require("./with_name");
10
+ const version_1 = require("../../../version");
11
+ class SQLDefiningNewAssociation extends combi_1.Expression {
12
+ getRunnable() {
13
+ const joinTag = (0, combi_1.optPrio)((0, combi_1.regex)(/^#[A-Z][A-Z0-9_]*$/i));
14
+ const target = (0, combi_1.altPrio)(new database_table_1.DatabaseTable(true), with_name_1.WithName);
15
+ return (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)("JOIN", joinTag, (0, combi_1.optPrio)(sql_path_join_type_1.SQLPathJoinType), target, "AS", sql_as_name_1.SQLAsName, "ON", sql_cond_1.SQLCond));
16
+ }
17
+ }
18
+ exports.SQLDefiningNewAssociation = SQLDefiningNewAssociation;
19
+ //# sourceMappingURL=sql_defining_new_association.js.map
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLDmlOptions = void 0;
4
+ const combi_1 = require("../combi");
5
+ const version_1 = require("../../../version");
6
+ const sql_source_simple_1 = require("./sql_source_simple");
7
+ const _1 = require(".");
8
+ class SQLDmlOptions extends combi_1.Expression {
9
+ getRunnable() {
10
+ const usingClient = (0, combi_1.seq)("USING CLIENT", sql_source_simple_1.SQLSourceSimple);
11
+ const general = (0, combi_1.per)(_1.SQLPrivilegedAccess, _1.DatabaseConnection);
12
+ const body = (0, combi_1.alt)((0, combi_1.seq)(usingClient, (0, combi_1.optPrio)(general)), general);
13
+ return (0, combi_1.ver)(version_1.Release.v914, (0, combi_1.seq)("OPTIONS", body));
14
+ }
15
+ }
16
+ exports.SQLDmlOptions = SQLDmlOptions;
17
+ //# sourceMappingURL=sql_dml_options.js.map
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLExposeClientAs = void 0;
4
+ const combi_1 = require("../combi");
5
+ class SQLExposeClientAs extends combi_1.Expression {
6
+ getRunnable() {
7
+ return (0, combi_1.seq)("EXPOSE CLIENT AS", (0, combi_1.regex)(/^\w+$/));
8
+ }
9
+ }
10
+ exports.SQLExposeClientAs = SQLExposeClientAs;
11
+ //# sourceMappingURL=sql_expose_client_as.js.map
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLExtendedResult = void 0;
4
+ const combi_1 = require("../combi");
5
+ const tokens_1 = require("../../1_lexer/tokens");
6
+ class SQLExtendedResult extends combi_1.Expression {
7
+ getRunnable() {
8
+ return (0, combi_1.seq)("EXTENDED RESULT", (0, combi_1.tok)(tokens_1.WAt), (0, combi_1.regex)(/^\w+$/));
9
+ }
10
+ }
11
+ exports.SQLExtendedResult = SQLExtendedResult;
12
+ //# sourceMappingURL=sql_extended_result.js.map
@@ -13,7 +13,7 @@ class SQLField extends combi_1.Expression {
13
13
  const abap = (0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.SimpleFieldChain2, atParen)), { also: combi_1.AlsoIn.OpenABAP });
14
14
  const as = (0, combi_1.seq)("AS", _1.SQLAsName);
15
15
  const parenFieldName = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFieldName, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.WParenRight)));
16
- const fieldNoAgg = (0, combi_1.altPrio)(_1.SQLCase, sql_function_1.SQLFunction, sql_path_for_column_1.SQLPathForColumn, _1.SQLFieldName, abap, _1.Constant, parenFieldName);
16
+ const fieldNoAgg = (0, combi_1.altPrio)(_1.SQLCase, sql_function_1.SQLFunction, sql_path_for_column_1.SQLPathForColumn, _1.SQLTypedLiteral, _1.SQLFieldName, abap, _1.Constant, parenFieldName);
17
17
  const field = (0, combi_1.altPrio)(_1.SQLAggregation, fieldNoAgg);
18
18
  const parenField = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), field, (0, combi_1.tok)(tokens_1.WParenRightW));
19
19
  const parenFieldNoAgg = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), fieldNoAgg, (0, combi_1.tok)(tokens_1.WParenRightW));
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SQLFieldAndValue = void 0;
4
4
  const combi_1 = require("../combi");
5
+ const tokens_1 = require("../../1_lexer/tokens");
5
6
  const integer_1 = require("./integer");
6
- const sql_arithmetic_operator_1 = require("./sql_arithmetic_operator");
7
7
  const sql_field_name_1 = require("./sql_field_name");
8
8
  const sql_source_1 = require("./sql_source");
9
9
  class SQLFieldAndValue extends combi_1.Expression {
10
10
  getRunnable() {
11
- const opt1 = (0, combi_1.seq)((0, combi_1.altPrio)(integer_1.Integer, sql_field_name_1.SQLFieldName), sql_arithmetic_operator_1.SQLArithmeticOperator, sql_source_1.SQLSource);
11
+ const op = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WPlusW), (0, combi_1.tok)(tokens_1.WDashW));
12
+ const opt1 = (0, combi_1.seq)((0, combi_1.altPrio)(integer_1.Integer, sql_field_name_1.SQLFieldName), op, sql_source_1.SQLSource);
12
13
  const param = (0, combi_1.seq)(sql_field_name_1.SQLFieldName, "=", (0, combi_1.altPrio)(opt1, sql_source_1.SQLSource));
13
14
  return param;
14
15
  }
@@ -2,25 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SQLFrom = void 0;
4
4
  const combi_1 = require("../combi");
5
- const tokens_1 = require("../../1_lexer/tokens");
6
- const _1 = require(".");
7
- const version_1 = require("../../../version");
5
+ const sql_from_body_1 = require("./sql_from_body");
8
6
  class SQLFrom extends combi_1.Expression {
9
- // todo: rewrite/refactor this method
10
7
  getRunnable() {
11
- const joins = (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), _1.SQLJoin));
12
- // No opening parens
13
- const from0 = (0, combi_1.seq)("FROM", _1.SQLFromSource, joins);
14
- // 1 to 7 opening parens, with up to that many closing parens at the end (dynamic FROM, not allowed in KeyUser)
15
- const from1 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
16
- const from2 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
17
- const from3 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
18
- const from4 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
19
- const from5 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
20
- const from6 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
21
- const from7 = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("FROM", (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeftW), _1.SQLFromSource, joins, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW))));
22
- const source = (0, combi_1.altPrio)(from7, from6, from5, from4, from3, from2, from1, from0);
23
- return source;
8
+ return (0, combi_1.seq)("FROM", new sql_from_body_1.SQLFromBody());
24
9
  }
25
10
  }
26
11
  exports.SQLFrom = SQLFrom;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLFromBody = void 0;
4
+ const combi_1 = require("../combi");
5
+ const tokens_1 = require("../../1_lexer/tokens");
6
+ const _1 = require(".");
7
+ const version_1 = require("../../../version");
8
+ class SQLFromBody extends combi_1.Expression {
9
+ getRunnable() {
10
+ const joins = (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), _1.SQLJoin));
11
+ const leaf = (0, combi_1.seq)(_1.SQLFromSource, joins);
12
+ const nested = (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), SQLFromBody, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)), joins));
13
+ return (0, combi_1.altPrio)(nested, leaf);
14
+ }
15
+ }
16
+ exports.SQLFromBody = SQLFromBody;
17
+ //# sourceMappingURL=sql_from_body.js.map
@@ -12,12 +12,13 @@ const sql_hierarchy_accessor_1 = require("./sql_hierarchy_accessor");
12
12
  const sql_hierarchy_aggregate_1 = require("./sql_hierarchy_aggregate");
13
13
  class SQLFromSource extends combi_1.Expression {
14
14
  getRunnable() {
15
- // https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-752-open_sql.htm#!ABAP_MODIFICATION_1@1@
16
15
  const tab = (0, combi_1.ver)(version_1.Release.v752, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.FieldChain), { also: combi_1.AlsoIn.OpenABAP });
17
16
  const aas = (0, combi_1.seq)("AS", _1.SQLAsName);
18
17
  const privileged = (0, combi_1.ver)(version_1.Release.v752, (0, combi_1.seq)("WITH", _1.SQLPrivilegedAccess));
18
+ const providedBy = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v796, _1.SQLProvidedBy));
19
+ const exposeClient = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v913, _1.SQLExposeClientAs));
19
20
  const pathForEntity = (0, combi_1.optPrio)((0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, new sql_path_for_entity_1.SQLPathForEntity()));
20
- return (0, combi_1.seq)((0, combi_1.altPrio)(new sql_hierarchy_aggregate_1.SQLHierarchyAggregate(), new sql_hierarchy_accessor_1.SQLHierarchyAccessor(), new sql_hierarchy_source_1.SQLHierarchySource(), (0, combi_1.seq)(with_name_1.WithName, pathForEntity), (0, combi_1.seq)(new _1.DatabaseTable(true), (0, combi_1.optPrio)(_1.SQLCDSParameters), pathForEntity), tab), (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(aas));
21
+ return (0, combi_1.seq)((0, combi_1.altPrio)(new sql_hierarchy_aggregate_1.SQLHierarchyAggregate(), new sql_hierarchy_accessor_1.SQLHierarchyAccessor(), new sql_hierarchy_source_1.SQLHierarchySource(), (0, combi_1.seq)(with_name_1.WithName, pathForEntity), (0, combi_1.seq)(new _1.DatabaseTable(true), (0, combi_1.optPrio)(_1.SQLCDSParameters), pathForEntity), tab), providedBy, (0, combi_1.optPrio)(privileged), (0, combi_1.optPrio)(aas), exposeClient);
21
22
  }
22
23
  }
23
24
  exports.SQLFromSource = SQLFromSource;
@@ -6,6 +6,7 @@ const version_1 = require("../../../version");
6
6
  const dynamic_1 = require("./dynamic");
7
7
  const sql_field_name_1 = require("./sql_field_name");
8
8
  const sql_field_1 = require("./sql_field");
9
+ const sql_grouping_sets_1 = require("./sql_grouping_sets");
9
10
  class SQLGroupBy extends combi_1.Expression {
10
11
  getRunnable() {
11
12
  const fieldName = (0, combi_1.alt)(sql_field_name_1.SQLFieldName, dynamic_1.Dynamic);
@@ -13,7 +14,8 @@ class SQLGroupBy extends combi_1.Expression {
13
14
  const newGroup = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("GROUP BY", expr, (0, combi_1.altPrio)((0, combi_1.plus)((0, combi_1.seq)(",", expr)), (0, combi_1.optPrio)((0, combi_1.plus)(fieldName)))), { also: combi_1.AlsoIn.OpenABAP });
14
15
  const old = (0, combi_1.seq)((0, combi_1.plus)((0, combi_1.seq)(fieldName, ",")), fieldName);
15
16
  const oldGroup = (0, combi_1.seq)("GROUP BY", (0, combi_1.altPrio)(old, (0, combi_1.plus)(fieldName)));
16
- return (0, combi_1.altPrio)(newGroup, oldGroup);
17
+ const groupingSetsGroup = (0, combi_1.ver)(version_1.Release.v772, (0, combi_1.seq)("GROUP BY", sql_grouping_sets_1.SQLGroupingSets));
18
+ return (0, combi_1.altPrio)(groupingSetsGroup, newGroup, oldGroup);
17
19
  }
18
20
  }
19
21
  exports.SQLGroupBy = SQLGroupBy;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLGroupingSets = void 0;
4
+ const combi_1 = require("../combi");
5
+ const tokens_1 = require("../../1_lexer/tokens");
6
+ const sql_field_1 = require("./sql_field");
7
+ class SQLGroupingSets extends combi_1.Expression {
8
+ getRunnable() {
9
+ const set = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.optPrio)((0, combi_1.seq)(sql_field_1.SQLField, (0, combi_1.starPrio)((0, combi_1.seq)(",", sql_field_1.SQLField)))), (0, combi_1.tok)(tokens_1.WParenRightW));
10
+ const sets = (0, combi_1.seq)(set, (0, combi_1.starPrio)((0, combi_1.seq)(",", set)));
11
+ return (0, combi_1.seq)("GROUPING SETS", (0, combi_1.tok)(tokens_1.WParenLeftW), sets, (0, combi_1.tok)(tokens_1.WParenRightW));
12
+ }
13
+ }
14
+ exports.SQLGroupingSets = SQLGroupingSets;
15
+ //# sourceMappingURL=sql_grouping_sets.js.map
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLIndicators = void 0;
4
+ const combi_1 = require("../combi");
5
+ const tokens_1 = require("../../1_lexer/tokens");
6
+ const version_1 = require("../../../version");
7
+ class SQLIndicators extends combi_1.Expression {
8
+ getRunnable() {
9
+ const name = (0, combi_1.regex)(/^%?\w+$/);
10
+ const staticForm = (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), "NULL", (0, combi_1.alt)((0, combi_1.seq)("STRUCTURE", name), (0, combi_1.seq)("BITFIELD", name)));
11
+ const lparen = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenLeftW), (0, combi_1.tok)(tokens_1.WParenLeft));
12
+ const rparen = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.tok)(tokens_1.ParenRightW));
13
+ const dynamicForm = (0, combi_1.seq)(lparen, name, rparen);
14
+ return (0, combi_1.ver)(version_1.Release.v915, (0, combi_1.seq)("INDICATORS", (0, combi_1.altPrio)(staticForm, dynamicForm)));
15
+ }
16
+ }
17
+ exports.SQLIndicators = SQLIndicators;
18
+ //# sourceMappingURL=sql_indicators.js.map
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SQLIntoStructure = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const _1 = require(".");
6
+ const version_1 = require("../../../version");
6
7
  class SQLIntoStructure extends combi_1.Expression {
7
8
  getRunnable() {
8
9
  const intoSimple = (0, combi_1.seq)((0, combi_1.optPrio)("CORRESPONDING FIELDS OF"), _1.SQLTarget);
9
- return (0, combi_1.seq)("INTO", intoSimple);
10
+ const indicators = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v915, _1.SQLIndicators));
11
+ return (0, combi_1.seq)("INTO", intoSimple, indicators);
10
12
  }
11
13
  }
12
14
  exports.SQLIntoStructure = SQLIntoStructure;
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SQLIntoTable = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const _1 = require(".");
6
+ const version_1 = require("../../../version");
6
7
  class SQLIntoTable extends combi_1.Expression {
7
8
  getRunnable() {
8
- const into = (0, combi_1.seq)((0, combi_1.altPrio)("INTO", "APPENDING"), (0, combi_1.optPrio)("CORRESPONDING FIELDS OF"), "TABLE", _1.SQLTarget);
9
+ const indicators = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v915, _1.SQLIndicators));
10
+ const into = (0, combi_1.seq)((0, combi_1.altPrio)("INTO", "APPENDING"), (0, combi_1.optPrio)("CORRESPONDING FIELDS OF"), "TABLE", _1.SQLTarget, indicators);
9
11
  return into;
10
12
  }
11
13
  }
@@ -8,8 +8,9 @@ const sql_join_source_1 = require("./sql_join_source");
8
8
  class SQLJoin extends combi_1.Expression {
9
9
  getRunnable() {
10
10
  const joinType = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("INNER", "LEFT OUTER", "LEFT", "RIGHT OUTER", "RIGHT")), "JOIN");
11
- const join = (0, combi_1.seq)(joinType, new sql_join_source_1.SQLJoinSource(), "ON", _1.SQLCond);
12
- const crossJoin = (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.seq)("CROSS JOIN", new sql_join_source_1.SQLJoinSource()), { also: combi_1.AlsoIn.OpenABAP });
11
+ const joinTag = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v795, (0, combi_1.regex)(/^#[A-Z][A-Z0-9_]*$/i)));
12
+ const join = (0, combi_1.seq)(joinType, joinTag, new sql_join_source_1.SQLJoinSource(), "ON", _1.SQLCond);
13
+ const crossJoin = (0, combi_1.ver)(version_1.Release.v750, (0, combi_1.seq)("CROSS JOIN", joinTag, new sql_join_source_1.SQLJoinSource()), { also: combi_1.AlsoIn.OpenABAP });
13
14
  return (0, combi_1.altPrio)(crossJoin, join);
14
15
  }
15
16
  }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLMappingFromEntity = void 0;
4
+ const combi_1 = require("../combi");
5
+ const version_1 = require("../../../version");
6
+ class SQLMappingFromEntity extends combi_1.Expression {
7
+ getRunnable() {
8
+ return (0, combi_1.ver)(version_1.Release.v789, "MAPPING FROM ENTITY");
9
+ }
10
+ }
11
+ exports.SQLMappingFromEntity = SQLMappingFromEntity;
12
+ //# sourceMappingURL=sql_mapping_from_entity.js.map
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLOffset = void 0;
4
+ const combi_1 = require("../combi");
5
+ const sql_source_1 = require("./sql_source");
6
+ class SQLOffset extends combi_1.Expression {
7
+ getRunnable() {
8
+ return (0, combi_1.seq)("OFFSET", sql_source_1.SQLSource);
9
+ }
10
+ }
11
+ exports.SQLOffset = SQLOffset;
12
+ //# sourceMappingURL=sql_offset.js.map
@@ -8,10 +8,10 @@ const _1 = require(".");
8
8
  class SQLOptions extends combi_1.Expression {
9
9
  getRunnable() {
10
10
  const usingClients = (0, combi_1.alt)((0, combi_1.seq)("CLIENTS IN", (0, combi_1.alt)(sql_source_simple_1.SQLSourceSimple, "T000")), "ALL CLIENTS", (0, combi_1.seq)("CLIENT", sql_source_simple_1.SQLSourceSimple));
11
- const privilegedAccess = (0, combi_1.ver)(version_1.Release.v758, _1.SQLPrivilegedAccess);
11
+ const privilegedAccess = _1.SQLPrivilegedAccess;
12
12
  const general = (0, combi_1.per)(privilegedAccess, _1.SQLBypassingBuffer, _1.DatabaseConnection);
13
13
  const usingClause = (0, combi_1.seq)("USING", usingClients, (0, combi_1.optPrio)(general));
14
- return (0, combi_1.ver)(version_1.Release.v758, (0, combi_1.seq)("OPTIONS", (0, combi_1.alt)(usingClause, general)));
14
+ return (0, combi_1.ver)(version_1.Release.v796, (0, combi_1.seq)("OPTIONS", (0, combi_1.alt)(usingClause, general)));
15
15
  }
16
16
  }
17
17
  exports.SQLOptions = SQLOptions;
@@ -3,11 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SQLOrderBy = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const dynamic_1 = require("./dynamic");
6
+ const version_1 = require("../../../version");
7
+ const sql_field_1 = require("./sql_field");
6
8
  const sql_field_name_1 = require("./sql_field_name");
7
9
  class SQLOrderBy extends combi_1.Expression {
8
10
  getRunnable() {
9
11
  const ding = (0, combi_1.alt)("ASCENDING", "DESCENDING");
10
- const ofields = (0, combi_1.plus)((0, combi_1.seq)(sql_field_name_1.SQLFieldName, (0, combi_1.opt)(ding), (0, combi_1.opt)(",")));
12
+ const nulls = (0, combi_1.ver)(version_1.Release.v778, (0, combi_1.seq)("NULLS", (0, combi_1.alt)("FIRST", "LAST")));
13
+ const item = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Release.v789, sql_field_1.SQLField), sql_field_name_1.SQLFieldName);
14
+ const ofields = (0, combi_1.plus)((0, combi_1.seq)(item, (0, combi_1.opt)(ding), (0, combi_1.opt)(nulls), (0, combi_1.opt)(",")));
11
15
  const order = (0, combi_1.seq)("ORDER BY", (0, combi_1.altPrio)("PRIMARY KEY", dynamic_1.Dynamic, ofields));
12
16
  return order;
13
17
  }
@@ -4,10 +4,12 @@ exports.SQLPathForEntity = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const sql_path_segment_1 = require("./sql_path_segment");
6
6
  const database_table_1 = require("./database_table");
7
+ const sql_cte_path_prefix_1 = require("./sql_cte_path_prefix");
7
8
  const version_1 = require("../../../version");
8
9
  class SQLPathForEntity extends combi_1.Expression {
9
10
  getRunnable() {
10
- return (0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.seq)((0, combi_1.optPrio)(database_table_1.DatabaseTable), (0, combi_1.plus)(new sql_path_segment_1.SQLPathSegment())));
11
+ const prefix = (0, combi_1.altPrio)(new sql_cte_path_prefix_1.SQLCTEPathPrefix(), new database_table_1.DatabaseTable());
12
+ return (0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.seq)((0, combi_1.optPrio)(prefix), (0, combi_1.plus)(new sql_path_segment_1.SQLPathSegment())));
11
13
  }
12
14
  }
13
15
  exports.SQLPathForEntity = SQLPathForEntity;
@@ -4,7 +4,10 @@ exports.SQLPathJoinType = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  class SQLPathJoinType extends combi_1.Expression {
6
6
  getRunnable() {
7
- return (0, combi_1.altPrio)("EXACT ONE TO ONE", "ONE TO ONE", "MANY TO MANY", "MANY TO ONE", "ONE TO MANY", "LEFT OUTER", "RIGHT OUTER", "INNER");
7
+ const innerLike = (0, combi_1.altPrio)("INNER", "LEFT OUTER", "RIGHT OUTER");
8
+ const card = (0, combi_1.altPrio)("EXACT ONE", "MANY", "ONE");
9
+ const joinCard = (0, combi_1.seq)(card, "TO", card);
10
+ return (0, combi_1.altPrio)((0, combi_1.seq)(innerLike, (0, combi_1.optPrio)(joinCard)), joinCard);
8
11
  }
9
12
  }
10
13
  exports.SQLPathJoinType = SQLPathJoinType;
@@ -14,7 +14,8 @@ class SQLPathSegment extends combi_1.Expression {
14
14
  this.nws = nws;
15
15
  }
16
16
  getRunnable() {
17
- const filter = (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.BracketLeftW), (0, combi_1.optPrio)(sql_path_cardinality_1.SQLPathCardinality), (0, combi_1.optPrio)(sql_path_join_type_1.SQLPathJoinType), (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.optPrio)("WHERE"), sql_cond_1.SQLCond)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WBracketRightW), (0, combi_1.tok)(tokens_1.WBracketRight))));
17
+ const joinTag = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v795, (0, combi_1.regex)(/^#[A-Z][A-Z0-9_]*$/i)));
18
+ const filter = (0, combi_1.ver)(version_1.Release.v751, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.BracketLeftW), joinTag, (0, combi_1.optPrio)(sql_path_cardinality_1.SQLPathCardinality), (0, combi_1.optPrio)(sql_path_join_type_1.SQLPathJoinType), (0, combi_1.optPrio)((0, combi_1.seq)((0, combi_1.optPrio)("WHERE"), sql_cond_1.SQLCond)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WBracketRightW), (0, combi_1.tok)(tokens_1.WBracketRight))));
18
19
  const params = (0, combi_1.ver)(version_1.Release.v751, sql_cds_parameters_1.SQLCDSParameters);
19
20
  const name = this.nws
20
21
  ? (0, combi_1.tok)(tokens_1.AssociationName)
@@ -6,7 +6,7 @@ const version_1 = require("../../../version");
6
6
  const sql_source_simple_1 = require("./sql_source_simple");
7
7
  class SQLPrivilegedAccess extends combi_1.Expression {
8
8
  getRunnable() {
9
- const accessLevel = (0, combi_1.verLang)(version_1.LanguageVersion.Cloud, (0, combi_1.seq)("LEVEL", sql_source_simple_1.SQLSourceSimple));
9
+ const accessLevel = (0, combi_1.ver)(version_1.Release.v917, (0, combi_1.seq)("LEVEL", sql_source_simple_1.SQLSourceSimple));
10
10
  return (0, combi_1.seq)("PRIVILEGED ACCESS", (0, combi_1.optPrio)(accessLevel));
11
11
  }
12
12
  }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLProvidedBy = void 0;
4
+ const combi_1 = require("../combi");
5
+ const database_table_1 = require("./database_table");
6
+ class SQLProvidedBy extends combi_1.Expression {
7
+ getRunnable() {
8
+ return (0, combi_1.seq)("PROVIDED BY", (0, combi_1.altPrio)(new database_table_1.DatabaseTable(true), (0, combi_1.regex)(/^[\w\/]+$/)));
9
+ }
10
+ }
11
+ exports.SQLProvidedBy = SQLProvidedBy;
12
+ //# sourceMappingURL=sql_provided_by.js.map
@@ -9,7 +9,7 @@ class SQLSource extends combi_1.Expression {
9
9
  getRunnable() {
10
10
  const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));
11
11
  const at = (0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.SimpleSource3, paren)), { also: combi_1.AlsoIn.OpenABAP });
12
- return (0, combi_1.altPrio)(_1.SQLAliasField, _1.SimpleSource3, at);
12
+ return (0, combi_1.altPrio)(_1.SQLTypedLiteral, _1.SQLAliasField, _1.SimpleSource3, at);
13
13
  }
14
14
  }
15
15
  exports.SQLSource = SQLSource;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLTypedLiteral = void 0;
4
+ const combi_1 = require("../combi");
5
+ const TYPED_LITERAL_TYPES = [
6
+ "CHAR", "CLNT", "CUKY", "CURR", "DATN", "DATS", "DEC",
7
+ "DECFLOAT16", "DECFLOAT34",
8
+ "D16N", "D34N", "D16D", "D34D", "D16R", "D34R",
9
+ "FLTP",
10
+ "INT1", "INT2", "INT4", "INT8",
11
+ "LANG", "NUMC", "QUAN", "RAW", "RAWSTRING",
12
+ "SSTRING", "STRING", "TIMN", "TIMS", "UNIT", "UTCLONG",
13
+ ];
14
+ class SQLTypedLiteral extends combi_1.Expression {
15
+ getRunnable() {
16
+ const typeName = (0, combi_1.regex)(new RegExp("^(" + TYPED_LITERAL_TYPES.join("|") + ")$", "i"));
17
+ return (0, combi_1.seq)(typeName, (0, combi_1.regex)(/^`.*`$/));
18
+ }
19
+ }
20
+ exports.SQLTypedLiteral = SQLTypedLiteral;
21
+ //# sourceMappingURL=sql_typed_literal.js.map
@@ -8,9 +8,12 @@ const sql_client_1 = require("../expressions/sql_client");
8
8
  class DeleteDatabase {
9
9
  getMatcher() {
10
10
  const where = (0, combi_1.seq)("WHERE", (0, combi_1.altPrio)(expressions_1.SQLCond, expressions_1.Dynamic));
11
- const from = (0, combi_1.seq)("FROM", expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.opt)(where));
12
- const fromSomething = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSourceSimple);
13
- const table = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.optPrio)(fromSomething));
11
+ const upToOffset = (0, combi_1.ver)(version_1.Release.v764, (0, combi_1.altPrio)((0, combi_1.seq)(expressions_1.SQLUpTo, (0, combi_1.optPrio)(expressions_1.SQLOffset)), (0, combi_1.seq)(expressions_1.SQLOffset, (0, combi_1.optPrio)(expressions_1.SQLUpTo))));
12
+ const orderByTail = (0, combi_1.ver)(version_1.Release.v764, (0, combi_1.seq)(expressions_1.SQLOrderBy, (0, combi_1.optPrio)(upToOffset)));
13
+ const trailing = (0, combi_1.optPrio)((0, combi_1.altPrio)(orderByTail, upToOffset));
14
+ const from = (0, combi_1.seq)("FROM", expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.opt)(where), trailing, (0, combi_1.optPrio)(expressions_1.SQLDmlOptions));
15
+ const fromSomething = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSourceSimple, (0, combi_1.optPrio)(expressions_1.SQLIndicators), (0, combi_1.optPrio)(expressions_1.SQLMappingFromEntity));
16
+ const table = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)(sql_client_1.SQLClient), (0, combi_1.optPrio)(expressions_1.DatabaseConnection), (0, combi_1.optPrio)(fromSomething), (0, combi_1.optPrio)(expressions_1.SQLDmlOptions));
14
17
  const ret = (0, combi_1.seq)("DELETE", (0, combi_1.altPrio)(from, table));
15
18
  return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
16
19
  }
@@ -8,7 +8,8 @@ const sql_into_structure_1 = require("../expressions/sql_into_structure");
8
8
  class FetchNextCursor {
9
9
  getMatcher() {
10
10
  const size = (0, combi_1.seq)("PACKAGE SIZE", expressions_1.SQLSourceSimple);
11
- const ret = (0, combi_1.seq)("FETCH NEXT CURSOR", expressions_1.SQLSourceSimple, (0, combi_1.alt)(sql_into_structure_1.SQLIntoStructure, expressions_1.SQLIntoTable, expressions_1.SQLIntoList), (0, combi_1.optPrio)(size));
11
+ const extResult = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v766, expressions_1.SQLExtendedResult));
12
+ const ret = (0, combi_1.seq)("FETCH NEXT CURSOR", expressions_1.SQLSourceSimple, (0, combi_1.alt)(sql_into_structure_1.SQLIntoStructure, expressions_1.SQLIntoTable, expressions_1.SQLIntoList), extResult, (0, combi_1.optPrio)(size));
12
13
  return (0, combi_1.verNotLang)(version_1.LanguageVersion.Cloud, ret);
13
14
  }
14
15
  }
@@ -147,6 +147,7 @@ __exportStar(require("./insert_database"), exports);
147
147
  __exportStar(require("./insert_field_group"), exports);
148
148
  __exportStar(require("./update_database"), exports);
149
149
  __exportStar(require("./modify_database"), exports);
150
+ __exportStar(require("./merge_database"), exports);
150
151
  __exportStar(require("./modify_internal"), exports);
151
152
  __exportStar(require("./raise"), exports);
152
153
  __exportStar(require("./define"), exports);
@@ -8,10 +8,13 @@ const version_1 = require("../../../version");
8
8
  class InsertDatabase {
9
9
  getMatcher() {
10
10
  const sub = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.Select, (0, combi_1.tok)(tokens_1.WParenRightW));
11
- const f = (0, combi_1.seq)((0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), "FROM", (0, combi_1.opt)("TABLE"), (0, combi_1.alt)(expressions_1.SQLSource, sub), (0, combi_1.opt)("ACCEPTING DUPLICATE KEYS"));
12
- const from = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.opt)((0, combi_1.alt)(f, expressions_1.SQLClient, expressions_1.DatabaseConnection)));
13
- const into = (0, combi_1.seq)("INTO", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), "VALUES", expressions_1.SQLSource);
14
- return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("INSERT", (0, combi_1.alt)(from, into)));
11
+ const fromItabOrWa = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource, (0, combi_1.optPrio)(expressions_1.SQLIndicators), (0, combi_1.optPrio)(expressions_1.SQLMappingFromEntity));
12
+ const fromSubquery = (0, combi_1.seq)("FROM", sub);
13
+ const fromClause = (0, combi_1.alt)(fromItabOrWa, fromSubquery);
14
+ const fromTrailer = (0, combi_1.seq)((0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), fromClause, (0, combi_1.opt)("ACCEPTING DUPLICATE KEYS"), (0, combi_1.optPrio)(expressions_1.SQLDmlOptions));
15
+ const insertFromForm = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.opt)((0, combi_1.alt)(fromTrailer, expressions_1.SQLClient, expressions_1.DatabaseConnection)));
16
+ const insertIntoForm = (0, combi_1.seq)("INTO", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), "VALUES", expressions_1.SQLSource, (0, combi_1.optPrio)(expressions_1.SQLIndicators), (0, combi_1.optPrio)(expressions_1.SQLMappingFromEntity), (0, combi_1.optPrio)(expressions_1.SQLDmlOptions));
17
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("INSERT", (0, combi_1.alt)(insertFromForm, insertIntoForm)));
15
18
  }
16
19
  }
17
20
  exports.InsertDatabase = InsertDatabase;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MergeDatabase = void 0;
4
+ const combi_1 = require("../combi");
5
+ const tokens_1 = require("../../1_lexer/tokens");
6
+ const version_1 = require("../../../version");
7
+ const expressions_1 = require("../expressions");
8
+ const _select_core_1 = require("../expressions/_select_core");
9
+ class MergeDatabase {
10
+ getMatcher() {
11
+ const targetSpec = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)((0, combi_1.seq)("AS", expressions_1.SQLAsName)));
12
+ const subSelect = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), "SELECT", (0, _select_core_1.buildSelectCore)(false, false), (0, combi_1.tok)(tokens_1.WParenRightW), (0, combi_1.optPrio)((0, combi_1.seq)("AS", expressions_1.SQLAsName)));
13
+ const itabSource = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), expressions_1.SQLAsName, "AS", expressions_1.SQLAsName, (0, combi_1.optPrio)((0, combi_1.seq)("DECLARE CLIENT", expressions_1.SQLFieldName)));
14
+ const tableSource = (0, combi_1.seq)(expressions_1.DatabaseTable, (0, combi_1.optPrio)((0, combi_1.seq)("AS", expressions_1.SQLAsName)));
15
+ const usingClause = (0, combi_1.seq)("USING", (0, combi_1.altPrio)(subSelect, itabSource, tableSource));
16
+ const onClause = (0, combi_1.seq)("ON", expressions_1.SQLCond);
17
+ const setEntry = (0, combi_1.seq)(expressions_1.SQLFieldName, "=", expressions_1.SQLField);
18
+ const setList = (0, combi_1.seq)(setEntry, (0, combi_1.starPrio)((0, combi_1.seq)(",", setEntry)));
19
+ const matchedAction = (0, combi_1.altPrio)("DELETE", (0, combi_1.seq)("UPDATE", (0, combi_1.altPrio)("ALL", (0, combi_1.seq)("SET", setList))));
20
+ const whenMatched = (0, combi_1.seq)("WHEN MATCHED", (0, combi_1.optPrio)((0, combi_1.seq)("AND", expressions_1.SQLCond)), "THEN", matchedAction);
21
+ const insertCols = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.SQLFieldName, (0, combi_1.starPrio)((0, combi_1.seq)(",", expressions_1.SQLFieldName)), (0, combi_1.tok)(tokens_1.WParenRightW));
22
+ const insertValues = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.SQLField, (0, combi_1.starPrio)((0, combi_1.seq)(",", expressions_1.SQLField)), (0, combi_1.tok)(tokens_1.WParenRightW));
23
+ const notMatchedAction = (0, combi_1.seq)("INSERT", (0, combi_1.altPrio)("ALL", (0, combi_1.seq)(insertCols, "VALUES", insertValues)));
24
+ const whenNotMatched = (0, combi_1.seq)("WHEN NOT MATCHED", (0, combi_1.optPrio)((0, combi_1.seq)("AND", expressions_1.SQLCond)), "THEN", notMatchedAction);
25
+ const whenClauses = (0, combi_1.altPrio)((0, combi_1.seq)(whenMatched, (0, combi_1.optPrio)(whenNotMatched)), whenNotMatched);
26
+ const optionsClause = (0, combi_1.seq)("OPTIONS", (0, combi_1.altPrio)(expressions_1.SQLPrivilegedAccess, expressions_1.SQLClient, (0, combi_1.seq)(expressions_1.SQLClient, expressions_1.SQLPrivilegedAccess), (0, combi_1.seq)(expressions_1.SQLPrivilegedAccess, expressions_1.SQLClient)));
27
+ const trailingOptions = (0, combi_1.optPrio)(optionsClause);
28
+ const staticForm = (0, combi_1.seq)("INTO", targetSpec, (0, combi_1.optPrio)(usingClause), (0, combi_1.optPrio)(onClause), (0, combi_1.optPrio)(whenClauses), trailingOptions);
29
+ const ret = (0, combi_1.ver)(version_1.Release.v917, (0, combi_1.seq)("MERGE", (0, combi_1.alt)(staticForm, expressions_1.Dynamic)));
30
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
31
+ }
32
+ }
33
+ exports.MergeDatabase = MergeDatabase;
34
+ //# sourceMappingURL=merge_database.js.map
@@ -3,12 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModifyDatabase = void 0;
4
4
  const combi_1 = require("../combi");
5
5
  const expressions_1 = require("../expressions");
6
+ const tokens_1 = require("../../1_lexer/tokens");
6
7
  const version_1 = require("../../../version");
7
8
  class ModifyDatabase {
8
9
  getMatcher() {
9
- const from = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource);
10
+ const sub = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WParenLeftW), expressions_1.Select, (0, combi_1.tok)(tokens_1.WParenRightW));
11
+ const fromTable = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource, (0, combi_1.optPrio)(expressions_1.SQLIndicators), (0, combi_1.optPrio)(expressions_1.SQLMappingFromEntity));
12
+ const fromSubquery = (0, combi_1.seq)("FROM", sub);
13
+ const from = (0, combi_1.alt)(fromTable, fromSubquery);
10
14
  const options = (0, combi_1.per)(expressions_1.DatabaseConnection, from, expressions_1.SQLClient);
11
- return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("MODIFY", expressions_1.DatabaseTable, options));
15
+ return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, (0, combi_1.seq)("MODIFY", expressions_1.DatabaseTable, options, (0, combi_1.optPrio)(expressions_1.SQLDmlOptions)));
12
16
  }
13
17
  }
14
18
  exports.ModifyDatabase = ModifyDatabase;
@@ -9,9 +9,10 @@ class UpdateDatabase {
9
9
  getMatcher() {
10
10
  const parameters = (0, combi_1.seq)(expressions_1.SQLFieldAndValue, (0, combi_1.star)((0, combi_1.seq)((0, combi_1.opt)(","), expressions_1.SQLFieldAndValue)));
11
11
  const set = (0, combi_1.seq)("SET", (0, combi_1.alt)(parameters, expressions_1.Dynamic), (0, combi_1.opt)((0, combi_1.seq)("WHERE", expressions_1.SQLCond)));
12
- const indicators = (0, combi_1.seq)("INDICATORS SET STRUCTURE", expressions_1.ComponentName);
13
- const fromTable = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource, (0, combi_1.opt)((0, combi_1.ver)(version_2.Release.v755, indicators)));
14
- const ret = (0, combi_1.seq)("UPDATE", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), (0, combi_1.opt)((0, combi_1.alt)(fromTable, set)));
12
+ const setStructure = (0, combi_1.seq)("INDICATORS SET STRUCTURE", expressions_1.ComponentName);
13
+ const updateIndicators = (0, combi_1.altPrio)((0, combi_1.ver)(version_2.Release.v915, expressions_1.SQLIndicators), (0, combi_1.ver)(version_2.Release.v755, setStructure));
14
+ const fromTable = (0, combi_1.seq)("FROM", (0, combi_1.opt)("TABLE"), expressions_1.SQLSource, (0, combi_1.optPrio)(updateIndicators), (0, combi_1.optPrio)(expressions_1.SQLMappingFromEntity));
15
+ const ret = (0, combi_1.seq)("UPDATE", expressions_1.DatabaseTable, (0, combi_1.opt)(expressions_1.SQLClient), (0, combi_1.opt)(expressions_1.DatabaseConnection), (0, combi_1.opt)((0, combi_1.alt)(fromTable, set)), (0, combi_1.optPrio)(expressions_1.SQLDmlOptions));
15
16
  return (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, ret);
16
17
  }
17
18
  }
@@ -42,7 +42,7 @@ class Normal {
42
42
  getMatcher() {
43
43
  // note that the sequence of alternatives here influences performance
44
44
  return (0, _combi_1.alt)((0, _combi_1.sta)(Statements.Move), (0, _combi_1.sta)(Statements.Call), (0, _combi_1.sta)(Statements.Data), (0, _combi_1.sub)(Structures.If), (0, _combi_1.sta)(Statements.Clear), (0, _combi_1.sta)(Statements.FieldSymbol), (0, _combi_1.sta)(Statements.CreateObject), (0, _combi_1.sta)(Statements.CallFunction), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sub)(Structures.LoopAtScreen), (0, _combi_1.sub)(Structures.Loop), (0, _combi_1.sub)(Structures.LoopExtract), (0, _combi_1.sta)(Statements.Append), (0, _combi_1.sub)(Structures.Try), (0, _combi_1.sub)(Structures.OnChange), (0, _combi_1.sta)(Statements.ReadTable), (0, _combi_1.sta)(Statements.Assert), (0, _combi_1.sta)(Statements.Return), (0, _combi_1.sta)(Statements.Select), (0, _combi_1.sta)(Statements.Assign), (0, _combi_1.sta)(Statements.InsertInternal), (0, _combi_1.sta)(Statements.DeleteInternal), (0, _combi_1.sta)(Statements.Concatenate), (0, _combi_1.sub)(Structures.Case), (0, _combi_1.sub)(Structures.CaseType), (0, _combi_1.sub)(Structures.Enhancement), (0, _combi_1.sub)(Structures.EnhancementSection), (0, _combi_1.sta)(Statements.AddCorresponding), (0, _combi_1.sta)(Statements.Add), (0, _combi_1.sta)(Statements.AssignLocalCopy), (0, _combi_1.sta)(Statements.AuthorityCheck), (0, _combi_1.sta)(Statements.Back), (0, _combi_1.sta)(Statements.Break), (0, _combi_1.sta)(Statements.BreakId), (0, _combi_1.sta)(Statements.CallDatabase), (0, _combi_1.sta)(Statements.CallDialog), (0, _combi_1.sta)(Statements.CallKernel), (0, _combi_1.sta)(Statements.CallOLE), (0, _combi_1.sta)(Statements.CallScreen), (0, _combi_1.sta)(Statements.ModifyScreen), (0, _combi_1.sta)(Statements.CallSelectionScreen), (0, _combi_1.sta)(Statements.CallTransaction), (0, _combi_1.sta)(Statements.CallTransformation), (0, _combi_1.sta)(Statements.Check), (0, _combi_1.sta)(Statements.ClassDefinitionLoad), (0, _combi_1.sta)(Statements.CloseCursor), (0, _combi_1.sta)(Statements.CloseDataset), (0, _combi_1.sta)(Statements.Collect), (0, _combi_1.sta)(Statements.Commit), (0, _combi_1.sta)(Statements.Communication), (0, _combi_1.sta)(Statements.Compute), (0, _combi_1.sta)(Statements.CallBadi), (0, _combi_1.sta)(Statements.Condense), (0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sta)(Statements.Contexts), (0, _combi_1.sta)(Statements.Continue), (0, _combi_1.sta)(Statements.ConvertText), (0, _combi_1.sta)(Statements.Convert), (0, _combi_1.sta)(Statements.CreateData), (0, _combi_1.sta)(Statements.CreateOLE), (0, _combi_1.sta)(Statements.DeleteCluster), (0, _combi_1.sta)(Statements.DeleteDatabase), (0, _combi_1.sta)(Statements.DeleteDataset), (0, _combi_1.sta)(Statements.DeleteDynpro), (0, _combi_1.sta)(Statements.DeleteMemory), (0, _combi_1.sta)(Statements.DeleteReport), (0, _combi_1.sta)(Statements.DeleteTextpool), (0, _combi_1.sta)(Statements.Demand), (0, _combi_1.sta)(Statements.Describe), (0, _combi_1.sta)(Statements.Detail), (0, _combi_1.sta)(Statements.Divide), (0, _combi_1.sta)(Statements.EditorCall), (0, _combi_1.sta)(Statements.EnhancementPoint), (0, _combi_1.sta)(Statements.Exit), (0, _combi_1.sta)(Statements.ExportDynpro), (0, _combi_1.sta)(Statements.Export), (0, _combi_1.sta)(Statements.Extract), (0, _combi_1.sta)(Statements.FetchNextCursor), (0, _combi_1.sta)(Statements.FieldGroup), (0, _combi_1.sta)(Statements.Fields), (0, _combi_1.sta)(Statements.Find), (0, _combi_1.sta)(Statements.Format), (0, _combi_1.sta)(Statements.FreeMemory), (0, _combi_1.sta)(Statements.FreeObject), (0, _combi_1.sta)(Statements.Free), (0, _combi_1.sta)(Statements.GenerateDynpro), (0, _combi_1.sta)(Statements.GenerateReport), (0, _combi_1.sta)(Statements.GenerateSubroutine), (0, _combi_1.sta)(Statements.GetBadi), (0, _combi_1.sta)(Statements.GetBit), (0, _combi_1.sta)(Statements.GetCursor), (0, _combi_1.sta)(Statements.GetDataset), (0, _combi_1.sta)(Statements.GetLocale), (0, _combi_1.sta)(Statements.GetParameter), (0, _combi_1.sta)(Statements.GetPFStatus), (0, _combi_1.sta)(Statements.GetProperty), (0, _combi_1.sta)(Statements.GetReference), (0, _combi_1.sta)(Statements.GetRunTime), (0, _combi_1.sta)(Statements.GetTime), (0, _combi_1.sta)(Statements.Hide), (0, _combi_1.sta)(Statements.Nodes), (0, _combi_1.sta)(Statements.ImportDynpro), (0, _combi_1.sta)(Statements.ImportNametab), (0, _combi_1.sta)(Statements.MoveCorresponding), (0, _combi_1.sta)(Statements.Import), (0, _combi_1.sta)(Statements.Infotypes), (0, _combi_1.sta)(Statements.Include), // include does not have to be at top level
45
- (0, _combi_1.sta)(Statements.InsertDatabase), (0, _combi_1.sta)(Statements.InsertReport), (0, _combi_1.sta)(Statements.InsertTextpool), (0, _combi_1.sta)(Statements.InsertFieldGroup), (0, _combi_1.sta)(Statements.InterfaceLoad), (0, _combi_1.sta)(Statements.Leave), (0, _combi_1.sta)(Statements.LoadReport), (0, _combi_1.sta)(Statements.Local), (0, _combi_1.sta)(Statements.With), (0, _combi_1.sta)(Statements.LogPoint), (0, _combi_1.sta)(Statements.Message), (0, _combi_1.sta)(Statements.ModifyLine), (0, _combi_1.sta)(Statements.ModifyDatabase), (0, _combi_1.sta)(Statements.ModifyInternal), (0, _combi_1.sta)(Statements.Multiply), (0, _combi_1.sta)(Statements.NewLine), (0, _combi_1.sta)(Statements.NewPage), (0, _combi_1.sta)(Statements.OpenCursor), (0, _combi_1.sta)(Statements.OpenDataset), (0, _combi_1.sta)(Statements.Overlay), (0, _combi_1.sta)(Statements.Pack), (0, _combi_1.sta)(Statements.Perform), (0, _combi_1.sta)(Statements.FormDefinition), (0, _combi_1.sta)(Statements.Position), (0, _combi_1.sta)(Statements.Put), (0, _combi_1.sta)(Statements.PrintControl), (0, _combi_1.sta)(Statements.RaiseEvent), (0, _combi_1.sta)(Statements.RaiseEntityEvent), (0, _combi_1.sta)(Statements.Raise), (0, _combi_1.sta)(Statements.Ranges), (0, _combi_1.sta)(Statements.ReadDataset), (0, _combi_1.sta)(Statements.ReadLine), (0, _combi_1.sta)(Statements.ReadReport), (0, _combi_1.sta)(Statements.ReadTextpool), (0, _combi_1.sta)(Statements.Receive), (0, _combi_1.sta)(Statements.RefreshControl), (0, _combi_1.sta)(Statements.Refresh), (0, _combi_1.sta)(Statements.Reject), (0, _combi_1.sta)(Statements.Replace), (0, _combi_1.sta)(Statements.Reserve), (0, _combi_1.sta)(Statements.Resume), (0, _combi_1.sta)(Statements.Retry), (0, _combi_1.sta)(Statements.Rollback), (0, _combi_1.sta)(Statements.Scan), (0, _combi_1.sta)(Statements.ScrollList), (0, _combi_1.sta)(Statements.Search), (0, _combi_1.sta)(Statements.SetBit), (0, _combi_1.sta)(Statements.SetBlank), (0, _combi_1.sta)(Statements.SetCountry), (0, _combi_1.sta)(Statements.SetCursor), (0, _combi_1.sta)(Statements.SetDataset), (0, _combi_1.sta)(Statements.SetExtendedCheck), (0, _combi_1.sta)(Statements.SetHandler), (0, _combi_1.sta)(Statements.SetLanguage), (0, _combi_1.sta)(Statements.SetLeft), (0, _combi_1.sta)(Statements.SetLocale), (0, _combi_1.sta)(Statements.SetMargin), (0, _combi_1.sta)(Statements.SetParameter), (0, _combi_1.sta)(Statements.SetPFStatus), (0, _combi_1.sta)(Statements.SetProperty), (0, _combi_1.sta)(Statements.SetRunTime), (0, _combi_1.sta)(Statements.SetScreen), (0, _combi_1.sta)(Statements.SetTitlebar), (0, _combi_1.sta)(Statements.SetUserCommand), (0, _combi_1.sta)(Statements.SetUpdateTask), (0, _combi_1.sta)(Statements.Shift), (0, _combi_1.sta)(Statements.Skip), (0, _combi_1.sta)(Statements.SortDataset), (0, _combi_1.sta)(Statements.Sort), (0, _combi_1.sta)(Statements.Static), (0, _combi_1.sta)(Statements.Split), (0, _combi_1.sta)(Statements.Stop), (0, _combi_1.sta)(Statements.Submit), (0, _combi_1.sta)(Statements.Summary), (0, _combi_1.sta)(Statements.SubtractCorresponding), (0, _combi_1.sta)(Statements.Subtract), (0, _combi_1.sta)(Statements.SuppressDialog), (0, _combi_1.sta)(Statements.Supply), (0, _combi_1.sta)(Statements.Sum), (0, _combi_1.sta)(Statements.SyntaxCheck), (0, _combi_1.sta)(Statements.SystemCall), (0, _combi_1.sta)(Statements.Tables), (0, _combi_1.sta)(Statements.Transfer), (0, _combi_1.sta)(Statements.Translate), (0, _combi_1.sta)(Statements.Type), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.Uline), (0, _combi_1.sta)(Statements.Unassign), (0, _combi_1.sta)(Statements.Unpack), (0, _combi_1.sta)(Statements.UpdateDatabase), (0, _combi_1.sta)(Statements.Wait), (0, _combi_1.sta)(Statements.Window), (0, _combi_1.sta)(Statements.Write), (0, _combi_1.sta)(Statements.CommitEntities), (0, _combi_1.sta)(Statements.GetPermissions), (0, _combi_1.sta)(Statements.SetLocks), (0, _combi_1.sta)(Statements.ModifyEntities), (0, _combi_1.sta)(Statements.ReadEntities), (0, _combi_1.sta)(Statements.RollbackEntities), (0, _combi_1.sta)(Statements.Module), // todo, should be dynpro specific
45
+ (0, _combi_1.sta)(Statements.InsertDatabase), (0, _combi_1.sta)(Statements.InsertReport), (0, _combi_1.sta)(Statements.InsertTextpool), (0, _combi_1.sta)(Statements.InsertFieldGroup), (0, _combi_1.sta)(Statements.InterfaceLoad), (0, _combi_1.sta)(Statements.Leave), (0, _combi_1.sta)(Statements.LoadReport), (0, _combi_1.sta)(Statements.Local), (0, _combi_1.sta)(Statements.With), (0, _combi_1.sta)(Statements.LogPoint), (0, _combi_1.sta)(Statements.Message), (0, _combi_1.sta)(Statements.MergeDatabase), (0, _combi_1.sta)(Statements.ModifyLine), (0, _combi_1.sta)(Statements.ModifyDatabase), (0, _combi_1.sta)(Statements.ModifyInternal), (0, _combi_1.sta)(Statements.Multiply), (0, _combi_1.sta)(Statements.NewLine), (0, _combi_1.sta)(Statements.NewPage), (0, _combi_1.sta)(Statements.OpenCursor), (0, _combi_1.sta)(Statements.OpenDataset), (0, _combi_1.sta)(Statements.Overlay), (0, _combi_1.sta)(Statements.Pack), (0, _combi_1.sta)(Statements.Perform), (0, _combi_1.sta)(Statements.FormDefinition), (0, _combi_1.sta)(Statements.Position), (0, _combi_1.sta)(Statements.Put), (0, _combi_1.sta)(Statements.PrintControl), (0, _combi_1.sta)(Statements.RaiseEvent), (0, _combi_1.sta)(Statements.RaiseEntityEvent), (0, _combi_1.sta)(Statements.Raise), (0, _combi_1.sta)(Statements.Ranges), (0, _combi_1.sta)(Statements.ReadDataset), (0, _combi_1.sta)(Statements.ReadLine), (0, _combi_1.sta)(Statements.ReadReport), (0, _combi_1.sta)(Statements.ReadTextpool), (0, _combi_1.sta)(Statements.Receive), (0, _combi_1.sta)(Statements.RefreshControl), (0, _combi_1.sta)(Statements.Refresh), (0, _combi_1.sta)(Statements.Reject), (0, _combi_1.sta)(Statements.Replace), (0, _combi_1.sta)(Statements.Reserve), (0, _combi_1.sta)(Statements.Resume), (0, _combi_1.sta)(Statements.Retry), (0, _combi_1.sta)(Statements.Rollback), (0, _combi_1.sta)(Statements.Scan), (0, _combi_1.sta)(Statements.ScrollList), (0, _combi_1.sta)(Statements.Search), (0, _combi_1.sta)(Statements.SetBit), (0, _combi_1.sta)(Statements.SetBlank), (0, _combi_1.sta)(Statements.SetCountry), (0, _combi_1.sta)(Statements.SetCursor), (0, _combi_1.sta)(Statements.SetDataset), (0, _combi_1.sta)(Statements.SetExtendedCheck), (0, _combi_1.sta)(Statements.SetHandler), (0, _combi_1.sta)(Statements.SetLanguage), (0, _combi_1.sta)(Statements.SetLeft), (0, _combi_1.sta)(Statements.SetLocale), (0, _combi_1.sta)(Statements.SetMargin), (0, _combi_1.sta)(Statements.SetParameter), (0, _combi_1.sta)(Statements.SetPFStatus), (0, _combi_1.sta)(Statements.SetProperty), (0, _combi_1.sta)(Statements.SetRunTime), (0, _combi_1.sta)(Statements.SetScreen), (0, _combi_1.sta)(Statements.SetTitlebar), (0, _combi_1.sta)(Statements.SetUserCommand), (0, _combi_1.sta)(Statements.SetUpdateTask), (0, _combi_1.sta)(Statements.Shift), (0, _combi_1.sta)(Statements.Skip), (0, _combi_1.sta)(Statements.SortDataset), (0, _combi_1.sta)(Statements.Sort), (0, _combi_1.sta)(Statements.Static), (0, _combi_1.sta)(Statements.Split), (0, _combi_1.sta)(Statements.Stop), (0, _combi_1.sta)(Statements.Submit), (0, _combi_1.sta)(Statements.Summary), (0, _combi_1.sta)(Statements.SubtractCorresponding), (0, _combi_1.sta)(Statements.Subtract), (0, _combi_1.sta)(Statements.SuppressDialog), (0, _combi_1.sta)(Statements.Supply), (0, _combi_1.sta)(Statements.Sum), (0, _combi_1.sta)(Statements.SyntaxCheck), (0, _combi_1.sta)(Statements.SystemCall), (0, _combi_1.sta)(Statements.Tables), (0, _combi_1.sta)(Statements.Transfer), (0, _combi_1.sta)(Statements.Translate), (0, _combi_1.sta)(Statements.Type), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.Uline), (0, _combi_1.sta)(Statements.Unassign), (0, _combi_1.sta)(Statements.Unpack), (0, _combi_1.sta)(Statements.UpdateDatabase), (0, _combi_1.sta)(Statements.Wait), (0, _combi_1.sta)(Statements.Window), (0, _combi_1.sta)(Statements.Write), (0, _combi_1.sta)(Statements.CommitEntities), (0, _combi_1.sta)(Statements.GetPermissions), (0, _combi_1.sta)(Statements.SetLocks), (0, _combi_1.sta)(Statements.ModifyEntities), (0, _combi_1.sta)(Statements.ReadEntities), (0, _combi_1.sta)(Statements.RollbackEntities), (0, _combi_1.sta)(Statements.Module), // todo, should be dynpro specific
46
46
  (0, _combi_1.sta)(Statements.Field), // todo, should be dynpro specific
47
47
  (0, _combi_1.sub)(Structures.Chain), // todo, should be dynpro specific
48
48
  (0, _combi_1.sub)(Structures.Define), (0, _combi_1.sub)(Structures.TestInjection), (0, _combi_1.sub)(Structures.TestSeam), (0, _combi_1.sub)(Structures.TypeMesh), (0, _combi_1.sub)(Structures.Provide), (0, _combi_1.sub)(Structures.CatchSystemExceptions), (0, _combi_1.sub)(Structures.At), (0, _combi_1.sub)(Structures.AtFirst), (0, _combi_1.sub)(Structures.AtLast), (0, _combi_1.sub)(Structures.Constants), (0, _combi_1.sub)(Structures.Types), (0, _combi_1.sub)(Structures.Statics), (0, _combi_1.sub)(Structures.Select), (0, _combi_1.sub)(Structures.Data), (0, _combi_1.sub)(Structures.TypeEnum), (0, _combi_1.sub)(Structures.While), (0, _combi_1.sub)(Structures.With), (0, _combi_1.sub)(Structures.Do), (0, _combi_1.sub)(Structures.ExecSQL));
@@ -5,7 +5,7 @@ exports.syntaxIssue = syntaxIssue;
5
5
  const issue_1 = require("../../issue");
6
6
  const severity_1 = require("../../severity");
7
7
  exports.CheckSyntaxKey = "check_syntax";
8
- function syntaxIssue(input, token, message) {
9
- return issue_1.Issue.atTokenFilename(input.filename, token, message, exports.CheckSyntaxKey, severity_1.Severity.Error);
8
+ function syntaxIssue(input, token, message, fix) {
9
+ return issue_1.Issue.atTokenFilename(input.filename, token, message, exports.CheckSyntaxKey, severity_1.Severity.Error, fix);
10
10
  }
11
11
  //# sourceMappingURL=_syntax_input.js.map
@@ -90,7 +90,15 @@ class Select {
90
90
  const fields = (_a = node.findFirstExpression(Expressions.SQLAggregation)) === null || _a === void 0 ? void 0 : _a.concatTokens();
91
91
  const c = new RegExp(/^count\(\s*\*\s*\)$/, "i");
92
92
  if (fields === undefined || c.test(fields) === false) {
93
- const nameToken = from === null || from === void 0 ? void 0 : from.findDirectExpression(Expressions.SQLFromSource);
93
+ let body = from === null || from === void 0 ? void 0 : from.findDirectExpression(Expressions.SQLFromBody);
94
+ while (body) {
95
+ const inner = body.findDirectExpression(Expressions.SQLFromBody);
96
+ if (inner === undefined) {
97
+ break;
98
+ }
99
+ body = inner;
100
+ }
101
+ const nameToken = body === null || body === void 0 ? void 0 : body.findDirectExpression(Expressions.SQLFromSource);
94
102
  if (nameToken) {
95
103
  const found = input.scope.findVariable(nameToken.concatTokens());
96
104
  if (found) {
@@ -115,7 +123,7 @@ class Select {
115
123
  && from.getFirstToken().getStart().isBefore(up.getFirstToken().getStart())
116
124
  && up.getFirstToken().getStart().isBefore(intoExpression.getFirstToken().getStart())) {
117
125
  const message = `The addition "UP TO n ROWS" must only be placed after the INTO/APPENDING clause.`;
118
- input.issues.push((0, _syntax_input_1.syntaxIssue)(input, up.getFirstToken(), message));
126
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, up.getFirstToken(), message, this.buildUpToRowsFix(node, input, up, intoExpression)));
119
127
  }
120
128
  for (const s of up.findDirectExpressions(Expressions.SQLSource)) {
121
129
  sql_source_1.SQLSource.runSyntax(s, input);
@@ -149,6 +157,25 @@ class Select {
149
157
  input.scope.pop(node.getLastToken().getEnd());
150
158
  }
151
159
  }
160
+ static buildUpToRowsFix(node, input, up, intoExpression) {
161
+ const tokens = node.getTokens();
162
+ const upLast = up.getLastToken();
163
+ const next = tokens[tokens.findIndex(t => t === upLast) + 1];
164
+ const deleteEnd = (next === null || next === void 0 ? void 0 : next.getStart()) || upLast.getEnd();
165
+ const range = { start: up.getFirstToken().getStart(), end: deleteEnd };
166
+ return {
167
+ [input.filename]: [
168
+ {
169
+ range: { start: intoExpression.getLastToken().getEnd(), end: intoExpression.getLastToken().getEnd() },
170
+ newText: " " + up.concatTokens(),
171
+ },
172
+ {
173
+ range,
174
+ newText: "",
175
+ },
176
+ ],
177
+ };
178
+ }
152
179
  // there are multiple rules, but gotta start somewhere
153
180
  static isStrictMode(node, input) {
154
181
  // strict OpenSQL is always required in the cloud language version
@@ -74,7 +74,7 @@ class Registry {
74
74
  }
75
75
  static abaplintVersion() {
76
76
  // magic, see build script "version.js"
77
- return "2.119.46";
77
+ return "2.119.48";
78
78
  }
79
79
  getDDICReferences() {
80
80
  return this.ddicReferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.119.46",
3
+ "version": "2.119.48",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",