1. import { getCompletionItem, language, conf } from './flink-sql'
    2. export function registerLanguage(monaco) {
    3. const languageId = 'fsql';
    4. monaco.languages.register({id: languageId});
    5. monaco.languages.setMonarchTokensProvider(languageId, language);
    6. monaco.languages.registerCompletionItemProvider(languageId, getCompletionItem(monaco));
    7. monaco.languages.setLanguageConfiguration(languageId, conf)
    8. }
    1. export const conf = {
    2. comments: {
    3. lineComment: '--',
    4. blockComment: ['/*', '*/']
    5. },
    6. brackets: [
    7. ['{', '}'],
    8. ['<', '>'],
    9. ['[', ']'],
    10. ['(', ')']
    11. ],
    12. autoClosingPairs: [
    13. { open: '{', close: '}' },
    14. { open: '<', close: '>' },
    15. { open: '[', close: ']' },
    16. { open: '(', close: ')' },
    17. { open: '`', close: '`' },
    18. { open: '"', close: '"' },
    19. { open: "'", close: "'" }
    20. ],
    21. surroundingPairs: [
    22. { open: '{', close: '}' },
    23. { open: '<', close: '>' },
    24. { open: '[', close: ']' },
    25. { open: '(', close: ')' },
    26. { open: '`', close: '`' },
    27. { open: '"', close: '"' },
    28. { open: "'", close: "'" }
    29. ]
    30. }
    31. export const language = {
    32. defaultToken: '',
    33. tokenPostfix: '.fsql',
    34. ignoreCase: true,
    35. brackets: [
    36. { open: '[', close: ']', token: 'delimiter.square' },
    37. { open: '(', close: ')', token: 'delimiter.parenthesis' },
    38. { open: '<', close: '>', token: 'delimiter.angle' }
    39. ],
    40. keywords: [
    41. 'ABS',
    42. 'ABSOLUTE',
    43. 'ACTION',
    44. 'ADA',
    45. 'ADD',
    46. 'ADMIN',
    47. 'AFTER',
    48. 'ALL',
    49. 'ALLOCATE',
    50. 'ALLOW',
    51. 'ALTER',
    52. 'ALWAYS',
    53. 'AND',
    54. 'ANY',
    55. 'ARE',
    56. 'AS',
    57. 'ASC',
    58. 'ASENSITIVE',
    59. 'ASSERTION',
    60. 'ASSIGNMENT',
    61. 'ASYMMETRIC',
    62. 'AT',
    63. 'ATOMIC',
    64. 'ATTRIBUTE',
    65. 'ATTRIBUTES',
    66. 'AUTHORIZATION',
    67. 'AVG',
    68. 'BEFORE',
    69. 'BEGIN',
    70. 'BERNOULLI',
    71. 'BETWEEN',
    72. 'BIT',
    73. 'BLOB',
    74. 'BOTH',
    75. 'BREADTH',
    76. 'BY',
    77. 'CALL',
    78. 'CALLED',
    79. 'CARDINALITY',
    80. 'CASCADE',
    81. 'CASCADED',
    82. 'CASE',
    83. 'CAST',
    84. 'CATALOG',
    85. 'CATALOG_NAME',
    86. 'CEIL',
    87. 'CEILING',
    88. 'CENTURY',
    89. 'CHAIN',
    90. 'CHARACTER',
    91. 'CHARACTERISTICS',
    92. 'CHARACTERS',
    93. 'CHARACTER_LENGTH',
    94. 'CHARACTER_SET_CATALOG',
    95. 'CHARACTER_SET_NAME',
    96. 'CHARACTER_SET_SCHEMA',
    97. 'CHAR_LENGTH',
    98. 'CHECK',
    99. 'CLASS_ORIGIN',
    100. 'CLOB',
    101. 'CLOSE',
    102. 'COALESCE',
    103. 'COBOL',
    104. 'COLLATE',
    105. 'COLLATION',
    106. 'COLLATION_CATALOG',
    107. 'COLLATION_NAME',
    108. 'COLLATION_SCHEMA',
    109. 'COLLECT',
    110. 'COLUMN',
    111. 'COLUMN_NAME',
    112. 'COMMAND_FUNCTION',
    113. 'COMMAND_FUNCTION_CODE',
    114. 'COMMENT',
    115. 'COMMIT',
    116. 'COMMITTED',
    117. 'CONDITION',
    118. 'CONDITION_NUMBER',
    119. 'CONNECT',
    120. 'CONNECTION',
    121. 'CONNECTION_NAME',
    122. 'CONSTRAINT',
    123. 'CONSTRAINTS',
    124. 'CONSTRAINT_CATALOG',
    125. 'CONSTRAINT_NAME',
    126. 'CONSTRAINT_SCHEMA',
    127. 'CONSTRUCTOR',
    128. 'CONTAINS',
    129. 'CONTINUE',
    130. 'CONVERT',
    131. 'CORR',
    132. 'CORRESPONDING',
    133. 'COUNT',
    134. 'COVAR_POP',
    135. 'COVAR_SAMP',
    136. 'CREATE',
    137. 'CROSS',
    138. 'CUBE',
    139. 'CUME_DIST',
    140. 'CURRENT',
    141. 'CURRENT_CATALOG',
    142. 'CURRENT_DATE',
    143. 'CURRENT_DEFAULT_TRANSFORM_GROUP',
    144. 'CURRENT_PATH',
    145. 'CURRENT_ROLE',
    146. 'CURRENT_SCHEMA',
    147. 'CURRENT_TIME',
    148. 'CURRENT_TIMESTAMP',
    149. 'CURRENT_TRANSFORM_GROUP_FOR_TYPE',
    150. 'CURRENT_USER',
    151. 'CURSOR',
    152. 'CURSOR_NAME',
    153. 'CYCLE',
    154. 'DATA',
    155. 'DATABASE',
    156. 'DATETIME_INTERVAL_CODE',
    157. 'DATETIME_INTERVAL_PRECISION',
    158. 'DAY',
    159. 'DEALLOCATE',
    160. 'DECADE',
    161. 'DECLARE',
    162. 'DEFAULT',
    163. 'DEFAULTS',
    164. 'DEFERRABLE',
    165. 'DEFERRED',
    166. 'DEFINE',
    167. 'DEFINED',
    168. 'DEFINER',
    169. 'DEGREE',
    170. 'DELETE',
    171. 'DENSE_RANK',
    172. 'DEPTH',
    173. 'DEREF',
    174. 'DERIVED',
    175. 'DESC',
    176. 'DESCRIBE',
    177. 'DESCRIPTION',
    178. 'DESCRIPTOR',
    179. 'DETERMINISTIC',
    180. 'DIAGNOSTICS',
    181. 'DISALLOW',
    182. 'DISCONNECT',
    183. 'DISPATCH',
    184. 'DISTINCT',
    185. 'DOMAIN',
    186. 'DOW',
    187. 'DOY',
    188. 'DROP',
    189. 'DYNAMIC',
    190. 'DYNAMIC_FUNCTION',
    191. 'DYNAMIC_FUNCTION_CODE',
    192. 'EACH',
    193. 'ELEMENT',
    194. 'ELSE',
    195. 'END',
    196. 'END-EXEC',
    197. 'ENFORCED',
    198. 'EPOCH',
    199. 'EQUALS',
    200. 'ESCAPE',
    201. 'EVERY',
    202. 'EXCEPT',
    203. 'EXCEPTION',
    204. 'EXCLUDE',
    205. 'EXCLUDING',
    206. 'EXEC',
    207. 'EXECUTE',
    208. 'EXISTS',
    209. 'EXP',
    210. 'EXPLAIN',
    211. 'EXTEND',
    212. 'EXTERNAL',
    213. 'EXTRACT',
    214. 'FALSE',
    215. 'FETCH',
    216. 'FILTER',
    217. 'FINAL',
    218. 'FIRST',
    219. 'FIRST_VALUE',
    220. 'FLOOR',
    221. 'FOLLOWING',
    222. 'FOR',
    223. 'FOREIGN',
    224. 'FORTRAN',
    225. 'FOUND',
    226. 'FRAC_SECOND',
    227. 'FREE',
    228. 'FROM',
    229. 'FULL',
    230. 'FUNCTION',
    231. 'FUSION',
    232. 'GENERAL',
    233. 'GENERATED',
    234. 'GET',
    235. 'GLOBAL',
    236. 'GO',
    237. 'GOTO',
    238. 'GRANT',
    239. 'GRANTED',
    240. 'GROUP',
    241. 'GROUPING',
    242. 'HAVING',
    243. 'HIERARCHY',
    244. 'HOLD',
    245. 'HOUR',
    246. 'IDENTITY',
    247. 'IMMEDIATE',
    248. 'IMPLEMENTATION',
    249. 'IMPORT',
    250. 'IN',
    251. 'INCLUDING',
    252. 'INCREMENT',
    253. 'INDICATOR',
    254. 'INITIALLY',
    255. 'INNER',
    256. 'INOUT',
    257. 'INPUT',
    258. 'INSENSITIVE',
    259. 'INSERT',
    260. 'INSTANCE',
    261. 'INSTANTIABLE',
    262. 'INTERSECT',
    263. 'INTERSECTION',
    264. 'INTERVAL',
    265. 'INTO',
    266. 'INVOKER',
    267. 'IS',
    268. 'ISOLATION',
    269. 'JAVA',
    270. 'JOIN',
    271. 'KEY',
    272. 'KEY_MEMBER',
    273. 'KEY_TYPE',
    274. 'LABEL',
    275. 'LANGUAGE',
    276. 'LARGE',
    277. 'LAST',
    278. 'LAST_VALUE',
    279. 'LATERAL',
    280. 'LEADING',
    281. 'LEFT',
    282. 'LENGTH',
    283. 'LEVEL',
    284. 'LIBRARY',
    285. 'LIKE',
    286. 'LIMIT',
    287. 'LN',
    288. 'LOCAL',
    289. 'LOCALTIME',
    290. 'LOCALTIMESTAMP',
    291. 'LOCATOR',
    292. 'LOWER',
    293. 'MATCH',
    294. 'MATCH_RECOGNIZE',
    295. 'MATCHED',
    296. 'MAX',
    297. 'MAXVALUE',
    298. 'MEASURES',
    299. 'MEMBER',
    300. 'MERGE',
    301. 'MESSAGE_LENGTH',
    302. 'MESSAGE_OCTET_LENGTH',
    303. 'MESSAGE_TEXT',
    304. 'METHOD',
    305. 'MICROSECOND',
    306. 'MILLENNIUM',
    307. 'MIN',
    308. 'MINUTE',
    309. 'MINVALUE',
    310. 'MOD',
    311. 'MODIFIES',
    312. 'MODULE',
    313. 'MONTH',
    314. 'MORE',
    315. 'MUMPS',
    316. 'NAME',
    317. 'NAMES',
    318. 'NATIONAL',
    319. 'NATURAL',
    320. 'NCHAR',
    321. 'NCLOB',
    322. 'NESTING',
    323. 'NEW',
    324. 'NEXT',
    325. 'NO',
    326. 'NONE',
    327. 'NORMALIZE',
    328. 'NORMALIZED',
    329. 'NOT',
    330. 'NULL',
    331. 'NULLABLE',
    332. 'NULLIF',
    333. 'NULLS',
    334. 'NUMBER',
    335. 'OBJECT',
    336. 'OCTETS',
    337. 'OCTET_LENGTH',
    338. 'OF',
    339. 'OFFSET',
    340. 'OLD',
    341. 'ON',
    342. 'ONLY',
    343. 'OPEN',
    344. 'OPTION',
    345. 'OPTIONS',
    346. 'OR',
    347. 'ORDER',
    348. 'ORDERING',
    349. 'ORDINALITY',
    350. 'OTHERS',
    351. 'OUT',
    352. 'OUTER',
    353. 'OUTPUT',
    354. 'OVER',
    355. 'OVERLAPS',
    356. 'OVERLAY',
    357. 'OVERRIDING',
    358. 'OVERWRITE',
    359. 'OVERWRITING',
    360. 'PAD',
    361. 'PARAMETER',
    362. 'PARAMETER_MODE',
    363. 'PARAMETER_NAME',
    364. 'PARAMETER_ORDINAL_POSITION',
    365. 'PARAMETER_SPECIFIC_CATALOG',
    366. 'PARAMETER_SPECIFIC_NAME',
    367. 'PARAMETER_SPECIFIC_SCHEMA',
    368. 'PARTIAL',
    369. 'PARTITION',
    370. 'PARTITIONED',
    371. 'PARTITIONS',
    372. 'PASCAL',
    373. 'PASSTHROUGH',
    374. 'PATTERN',
    375. 'PATH',
    376. 'PERCENTILE_CONT',
    377. 'PERCENTILE_DISC',
    378. 'PERCENT_RANK',
    379. 'PLACING',
    380. 'PLAN',
    381. 'PLI',
    382. 'POSITION',
    383. 'POWER',
    384. 'PRECEDING',
    385. 'PRECISION',
    386. 'PREPARE',
    387. 'PRESERVE',
    388. 'PRIMARY',
    389. 'PRIOR',
    390. 'PRIVILEGES',
    391. 'PROCEDURE',
    392. 'PUBLIC',
    393. 'PYTHON',
    394. 'QUARTER',
    395. 'RANGE',
    396. 'RANK',
    397. 'READ',
    398. 'READS',
    399. 'REAL',
    400. 'RECURSIVE',
    401. 'REF',
    402. 'REFERENCES',
    403. 'REFERENCING',
    404. 'REGR_AVGX',
    405. 'REGR_AVGY',
    406. 'REGR_COUNT',
    407. 'REGR_INTERCEPT',
    408. 'REGR_R2',
    409. 'REGR_SLOPE',
    410. 'REGR_SXX',
    411. 'REGR_SXY',
    412. 'REGR_SYY',
    413. 'RELATIVE',
    414. 'RELEASE',
    415. 'RENAME',
    416. 'REPEATABLE',
    417. 'RESET',
    418. 'RESTART',
    419. 'RESTRICT',
    420. 'RESULT',
    421. 'RETURN',
    422. 'RETURNED_CARDINALITY',
    423. 'RETURNED_LENGTH',
    424. 'RETURNED_OCTET_LENGTH',
    425. 'RETURNED_SQLSTATE',
    426. 'RETURNS',
    427. 'REVOKE',
    428. 'RIGHT',
    429. 'ROLE',
    430. 'ROLLBACK',
    431. 'ROLLUP',
    432. 'ROUTINE',
    433. 'ROUTINE_CATALOG',
    434. 'ROUTINE_NAME',
    435. 'ROUTINE_SCHEMA',
    436. 'ROWS',
    437. 'ROW_COUNT',
    438. 'ROW_NUMBER',
    439. 'SAVEPOINT',
    440. 'SCALA',
    441. 'SCALE',
    442. 'SCHEMA',
    443. 'SCHEMA_NAME',
    444. 'SCOPE',
    445. 'SCOPE_CATALOGS',
    446. 'SCOPE_NAME',
    447. 'SCOPE_SCHEMA',
    448. 'SCROLL',
    449. 'SEARCH',
    450. 'SECOND',
    451. 'SECTION',
    452. 'SECURITY',
    453. 'SELECT',
    454. 'SELF',
    455. 'SENSITIVE',
    456. 'SEQUENCE',
    457. 'SERIALIZABLE',
    458. 'SERVER',
    459. 'SERVER_NAME',
    460. 'SESSION',
    461. 'SESSION_USER',
    462. 'SET',
    463. 'SETS',
    464. 'SIMILAR',
    465. 'SIMPLE',
    466. 'SIZE',
    467. 'SOME',
    468. 'SOURCE',
    469. 'SPACE',
    470. 'SPECIFIC',
    471. 'SPECIFICTYPE',
    472. 'SPECIFIC_NAME',
    473. 'SQL',
    474. 'SQLEXCEPTION',
    475. 'SQLSTATE',
    476. 'SQLWARNING',
    477. 'SQL_TSI_DAY',
    478. 'SQL_TSI_FRAC_SECOND',
    479. 'SQL_TSI_HOUR',
    480. 'SQL_TSI_MICROSECOND',
    481. 'SQL_TSI_MINUTE',
    482. 'SQL_TSI_MONTH',
    483. 'SQL_TSI_QUARTER',
    484. 'SQL_TSI_SECOND',
    485. 'SQL_TSI_WEEK',
    486. 'SQL_TSI_YEAR',
    487. 'SQRT',
    488. 'START',
    489. 'STATE',
    490. 'STATEMENT',
    491. 'STATIC',
    492. 'STDDEV_POP',
    493. 'STDDEV_SAMP',
    494. 'STREAM',
    495. 'STRUCTURE',
    496. 'STYLE',
    497. 'SUBCLASS_ORIGIN',
    498. 'SUBMULTISET',
    499. 'SUBSTITUTE',
    500. 'SUBSTRING',
    501. 'SUM',
    502. 'SYMMETRIC',
    503. 'SYSTEM',
    504. 'SYSTEM_TIME',
    505. 'SYSTEM_USER',
    506. 'TABLE',
    507. 'TABLESAMPLE',
    508. 'TABLE_NAME',
    509. 'TEMPORARY',
    510. 'THEN',
    511. 'TIES',
    512. 'TIMESTAMPADD',
    513. 'TIMESTAMPDIFF',
    514. 'TIMEZONE_HOUR',
    515. 'TIMEZONE_MINUTE',
    516. 'TO',
    517. 'TOP_LEVEL_COUNT',
    518. 'TRAILING',
    519. 'TRANSACTION',
    520. 'TRANSACTIONS_ACTIVE',
    521. 'TRANSACTIONS_COMMITTED',
    522. 'TRANSACTIONS_ROLLED_BACK',
    523. 'TRANSFORM',
    524. 'TRANSFORMS',
    525. 'TRANSLATE',
    526. 'TRANSLATION',
    527. 'TREAT',
    528. 'TRIGGER',
    529. 'TRIGGER_CATALOG',
    530. 'TRIGGER_NAME',
    531. 'TRIGGER_SCHEMA',
    532. 'TRIM',
    533. 'TRUE',
    534. 'TYPE',
    535. 'UESCAPE',
    536. 'UNBOUNDED',
    537. 'UNCOMMITTED',
    538. 'UNDER',
    539. 'UNION',
    540. 'UNIQUE',
    541. 'UNKNOWN',
    542. 'UNNAMED',
    543. 'UNNEST',
    544. 'UPDATE',
    545. 'UPPER',
    546. 'UPSERT',
    547. 'USAGE',
    548. 'USE',
    549. 'USER',
    550. 'USER_DEFINED_TYPE_CATALOG',
    551. 'USER_DEFINED_TYPE_CODE',
    552. 'USER_DEFINED_TYPE_NAME',
    553. 'USER_DEFINED_TYPE_SCHEMA',
    554. 'USING',
    555. 'VALUE',
    556. 'VALUES',
    557. 'VARYING',
    558. 'VAR_POP',
    559. 'VAR_SAMP',
    560. 'VERSION',
    561. 'VIEW',
    562. 'WATERMARK',
    563. 'WATERMARKS',
    564. 'WEEK',
    565. 'WHEN',
    566. 'WHENEVER',
    567. 'WHERE',
    568. 'WIDTH_BUCKET',
    569. 'WINDOW',
    570. 'WITH',
    571. 'WITHIN',
    572. 'WITHOUT',
    573. 'WORK',
    574. 'WRAPPER',
    575. 'WRITE',
    576. 'XML',
    577. 'YEAR',
    578. 'ZONE'
    579. ],
    580. typeKeywords: [
    581. // 字符串
    582. 'CHAR',
    583. 'VARCHAR',
    584. 'STRING',
    585. // 二进制字符串
    586. 'BINARY',
    587. 'VARBINARY',
    588. 'BYTES',
    589. // 精确数值
    590. 'DECIMAL',
    591. 'DEC',
    592. 'NUMERIC',
    593. 'TINYINT',
    594. 'SMALLINT',
    595. 'INT',
    596. 'INTEGER',
    597. 'BIGINT',
    598. // 近似数值
    599. 'FLOAT',
    600. 'DOUBLE',
    601. // 日期和时间
    602. 'DATE',
    603. 'TIME',
    604. 'TIMESTAMP',
    605. // 结构化的数据类型
    606. 'ARRAY',
    607. 'MAP',
    608. 'MULTISET',
    609. 'ROW',
    610. // 其他数据类型
    611. 'BOOLEAN',
    612. 'RAW',
    613. 'NULL'
    614. ],
    615. builtinFunctions: [
    616. 'EXISTS',
    617. // Arithmetic
    618. 'POWER',
    619. 'ABS',
    620. 'MOD',
    621. 'SQRT',
    622. 'LN',
    623. 'LOG10',
    624. 'LOG2',
    625. 'LOG',
    626. 'LOG',
    627. 'EXP',
    628. 'CEIL',
    629. 'CEILING',
    630. 'FLOOR',
    631. 'SIN',
    632. 'SINH',
    633. 'COS',
    634. 'TAN',
    635. 'TANH',
    636. 'COT',
    637. 'ASIN',
    638. 'ACOS',
    639. 'ATAN',
    640. 'ATAN2',
    641. 'COSH',
    642. 'DEGREES',
    643. 'RADIANS',
    644. 'SIGN',
    645. 'ROUND',
    646. 'PI',
    647. 'E',
    648. 'RAND',
    649. 'RAND_INTEGER',
    650. 'UUID',
    651. 'BIN',
    652. 'HEX',
    653. 'TRUNCATE',
    654. // String Functions
    655. 'CHAR_LENGTH',
    656. 'CHARACTER_LENGTH',
    657. 'UPPER',
    658. 'LOWER',
    659. 'POSITION',
    660. 'TRIM',
    661. 'LTRIM',
    662. 'RTRIM',
    663. 'REPEAT',
    664. 'REGEXP_REPLACE',
    665. 'OVERLAY',
    666. 'SUBSTRING',
    667. 'REPLACE',
    668. 'REGEXP_EXTRACT',
    669. 'INITCAP',
    670. 'CONCAT',
    671. 'CONCAT_WS',
    672. 'LPAD',
    673. 'RPAD',
    674. 'FROM_BASE64',
    675. 'TO_BASE64',
    676. 'ASCII',
    677. 'CHR',
    678. 'DECODE',
    679. 'ENCODE',
    680. 'INSTR',
    681. 'LEFT',
    682. 'RIGHT',
    683. 'LOCATE',
    684. 'PARSE_URL',
    685. 'REGEXP',
    686. 'REVERSE',
    687. 'SPLIT_INDEX',
    688. 'STR_TO_MAP',
    689. 'SUBSTR',
    690. // Temporal
    691. 'DATE',
    692. 'TIME',
    693. 'TIMESTAMP',
    694. 'CURRENT_DATE',
    695. 'CURRENT_TIME',
    696. 'CURRENT_TIMESTAMP',
    697. 'LOCALTIME',
    698. 'LOCALTIMESTAMP',
    699. 'EXTRACT',
    700. 'YEAR',
    701. 'QUARTER',
    702. 'MONTH',
    703. 'WEEK',
    704. 'DAYOFYEAR',
    705. 'DAYOFMONTH',
    706. 'DAYOFWEEK',
    707. 'HOUR',
    708. 'MINUTE',
    709. 'SECOND',
    710. 'FLOOR',
    711. 'CEIL',
    712. 'DATE_FORMAT',
    713. 'TIMESTAMPADD',
    714. 'TIMESTAMPDIFF',
    715. 'CONVERT_TZ',
    716. 'FROM_UNIXTIME',
    717. 'UNIX_TIMESTAMP',
    718. 'TO_DATE',
    719. 'TO_TIMESTAMP',
    720. 'NOW',
    721. 'PROCTIME',
    722. // Condition
    723. 'NULLIF',
    724. 'COALESCE',
    725. 'IF',
    726. 'IS_ALPHA',
    727. 'IS_DECIMAL',
    728. 'IS_DIGIT',
    729. // Type Conversion
    730. 'CAST',
    731. 'CARDINALITY',
    732. 'ELEMENT',
    733. // Value Construction
    734. 'ROW',
    735. 'ARRAY',
    736. 'MAP',
    737. // Grouping
    738. 'GROUP_ID',
    739. 'GROUPING',
    740. 'GROUPING_ID',
    741. // Hash
    742. 'MD5',
    743. 'SHA1',
    744. 'SHA224',
    745. 'SHA256',
    746. 'SHA384',
    747. 'SHA512',
    748. 'SHA2',
    749. // Aggregate
    750. 'COUNT',
    751. 'AVG',
    752. 'SUM',
    753. 'MAX',
    754. 'MIN',
    755. 'STDDEV_POP',
    756. 'STDDEV_SAMP',
    757. 'VAR_POP',
    758. 'VAR_SAMP',
    759. 'COLLECT',
    760. 'VARIANCE',
    761. 'RANK',
    762. 'DENSE_RANK',
    763. 'ROW_NUMBER',
    764. 'LEAD',
    765. 'LAG',
    766. 'FIRST_VALUE',
    767. 'LAST_VALUE',
    768. 'LISTAGG',
    769. // Window
    770. 'TUMBLE',
    771. 'HOP',
    772. 'SESSION',
    773. 'TUMBLE_START',
    774. 'HOP_START',
    775. 'SESSION_START',
    776. 'TUMBLE_END',
    777. 'HOP_END',
    778. 'SESSION_END',
    779. 'TUMBLE_ROWTIME',
    780. 'HOP_ROWTIME',
    781. 'SESSION_ROWTIME',
    782. 'TUMBLE_PROCTIME',
    783. 'HOP_PROCTIME',
    784. 'SESSION_PROCTIME',
    785. // CEP
    786. 'MATCH_ROWTIME',
    787. 'MATCH_PROCTIME',
    788. 'LAST',
    789. 'FIRST'
    790. ],
    791. tokenizer: {
    792. root: [
    793. // types
    794. ['DOUBLE PRECISION', 'type'],
    795. [/TIMESTAMP (WITHOUT|WITH)( LOCAL)? TIME ZONE/, 'type'],
    796. [/(TIMESTAMP)(?:(\()(\d+)(\)))( (?:WITHOUT|WITH)(?: LOCAL)? TIME ZONE)/, ['type', '@brackets', 'number', '@brackets', 'type']],
    797. [/INTERVAL (YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)/, 'type'],
    798. [/TO (MONTH|HOUR|MINUTE|SECOND)/, 'type'],
    799. // keywords
    800. [/IS( NOT)? NULL/, 'keyword'],
    801. [/CURRENT ROW/, 'keyword'],
    802. [/IF( NOT)? EXISTS/, 'keyword'],
    803. [/SHOW (CATALOGS|DATABASES|TABLES|VIEWS|FUNCTIONS)/, 'keyword'],
    804. [/(INNER|LEFT|RIGHT|FULL OUTER|CROSS) JOIN/, 'keyword'],
    805. [/(INTERVAL )('\d+')( )(HOUR|MINUTE|SECOND)/, ['keyword', 'string.sql', 'white', 'keyword']],
    806. [/(ALL|ONE) ROW PER MATCH/, 'keyword'],
    807. [/AFTER MATCH SKIP (PAST LAST ROW|TO NEXT ROW|TO LAST|TO FIRST)/, 'keyword'],
    808. // functions
    809. [/(DATE|TIME|TIMESTAMP)( `\w+`)/, ['predefined.sql', 'identifier']],
    810. [/(DATE|TIME|TIMESTAMP)( '[0-9\-: T.]+')/, ['predefined.sql', 'string.sql']],
    811. // attribute
    812. [/('[a-z0-9\-._]+')( *= *)('.+')/, ['attribute.name', 'operator.sql', 'attribute.value']],
    813. [/(SET )([a-z0-9\-._]+)( *= *)([^;]+)/, ['keyword', 'attribute.name', 'operator.sql', 'attribute.value']],
    814. // comment
    815. [/(--+.*|\/\*\+|\*\/)/, 'comment'],
    816. // whitespace
    817. [/\s+/, 'white'],
    818. // delimiters and operators
    819. [/[=<>+\-*|%/]+/, 'operator.sql'],
    820. [/[<>()\[\]]/, '@brackets'],
    821. // numbers
    822. [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
    823. [/0[xX][0-9a-fA-F]+/, 'number.hex'],
    824. [/\d+/, 'number'],
    825. { include: '@strings' },
    826. { include: '@identifiers' },
    827. // delimiter: after number because of .\d floats
    828. [/[;,.]/, 'delimiter'],
    829. // identifiers and keywords
    830. [/[\w]+/, {cases: {'@typeKeywords': 'type', '@builtinFunctions': 'predefined.sql', '@keywords': 'keyword', '@default': 'identifier'}}],
    831. ],
    832. strings: [
    833. [/'/, { token: 'string.sql', next: '@string' }]
    834. ],
    835. string: [
    836. [/[^']+/, 'string.sql'],
    837. [/''/, 'string.sql'],
    838. [/'/, { token: 'string.sql', next: '@pop' }]
    839. ],
    840. identifiers: [
    841. [/`/, { token: 'identifier', next: '@identifier' }]
    842. ],
    843. identifier: [
    844. [/[^`]+/, 'identifier'],
    845. [/``/, 'identifier'],
    846. [/`/, { token: 'identifier', next: '@pop' }]
    847. ],
    848. }
    849. }
    850. // complete
    851. export const getCompletionItem = (monaco) => {
    852. return {
    853. provideCompletionItems: (model, position, context, token) => {
    854. var word = model.getWordUntilPosition(position);
    855. var range = {
    856. startLineNumber: position.lineNumber,
    857. endLineNumber: position.lineNumber,
    858. startColumn: word.startColumn,
    859. endColumn: word.endColumn
    860. };
    861. const keywords = language.keywords.map(key => ({
    862. label: key,
    863. kind: monaco.languages.CompletionItemKind.Keyword,
    864. insertText: key,
    865. range,
    866. }));
    867. const typeKeywords = language.typeKeywords.map(key => ({
    868. label: key,
    869. kind: monaco.languages.CompletionItemKind.TypeParameter,
    870. insertText: key,
    871. range,
    872. }));
    873. const typeKeywordExpand = [{
    874. label: 'CHAR(n)',
    875. kind: monaco.languages.CompletionItemKind.TypeParameter,
    876. insertText: 'CHAR(${1:1})',
    877. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    878. range,
    879. }, {
    880. label: 'VARCHAR(n)',
    881. kind: monaco.languages.CompletionItemKind.TypeParameter,
    882. insertText: 'VARCHAR(${1:1})',
    883. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    884. range,
    885. }, {
    886. label: 'BINARY(n)',
    887. kind: monaco.languages.CompletionItemKind.TypeParameter,
    888. insertText: 'BINARY(${1:1})',
    889. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    890. range,
    891. }, {
    892. label: 'VARBINARY(n)',
    893. kind: monaco.languages.CompletionItemKind.TypeParameter,
    894. insertText: 'VARBINARY(${1:1})',
    895. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    896. range,
    897. }, {
    898. label: 'DECIMAL(p)',
    899. kind: monaco.languages.CompletionItemKind.TypeParameter,
    900. insertText: 'DECIMAL(${1:10})',
    901. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    902. range,
    903. }, {
    904. label: 'DECIMAL(p, s)',
    905. kind: monaco.languages.CompletionItemKind.TypeParameter,
    906. insertText: 'DECIMAL(${1:10}, ${2:0})',
    907. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    908. range,
    909. }, {
    910. label: 'DEC(p)',
    911. kind: monaco.languages.CompletionItemKind.TypeParameter,
    912. insertText: 'DEC(${1:10})',
    913. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    914. range,
    915. }, {
    916. label: 'DEC(p, s)',
    917. kind: monaco.languages.CompletionItemKind.TypeParameter,
    918. insertText: 'DEC(${1:10}, ${2:0})',
    919. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    920. range,
    921. }, {
    922. label: 'NUMERIC(p)',
    923. kind: monaco.languages.CompletionItemKind.TypeParameter,
    924. insertText: 'NUMERIC(${1:10})',
    925. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    926. range,
    927. }, {
    928. label: 'NUMERIC(p, s)',
    929. kind: monaco.languages.CompletionItemKind.TypeParameter,
    930. insertText: 'NUMERIC(${1:10}, ${2:0})',
    931. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    932. range,
    933. }, {
    934. label: 'DOUBLE PRECISION',
    935. kind: monaco.languages.CompletionItemKind.TypeParameter,
    936. insertText: 'DOUBLE PRECISION',
    937. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    938. range,
    939. }, {
    940. label: 'TIME(p)',
    941. kind: monaco.languages.CompletionItemKind.TypeParameter,
    942. insertText: 'TIME(${1:0})',
    943. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    944. range,
    945. }, {
    946. label: 'TIMESTAMP(p)',
    947. kind: monaco.languages.CompletionItemKind.TypeParameter,
    948. insertText: 'TIMESTAMP(${1:6})',
    949. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    950. range,
    951. }, {
    952. label: 'TIMESTAMP WITHOUT TIME ZONE',
    953. kind: monaco.languages.CompletionItemKind.TypeParameter,
    954. insertText: 'TIMESTAMP WITHOUT TIME ZONE',
    955. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    956. range,
    957. }, {
    958. label: 'TIMESTAMP(p) WITHOUT TIME ZONE',
    959. kind: monaco.languages.CompletionItemKind.TypeParameter,
    960. insertText: 'TIMESTAMP(${1:6}) WITHOUT TIME ZONE',
    961. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    962. range,
    963. }, {
    964. label: 'TIMESTAMP WITH TIME ZONE',
    965. kind: monaco.languages.CompletionItemKind.TypeParameter,
    966. insertText: 'TIMESTAMP WITH TIME ZONE',
    967. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    968. range,
    969. }, {
    970. label: 'TIMESTAMP(p) WITH TIME ZONE',
    971. kind: monaco.languages.CompletionItemKind.TypeParameter,
    972. insertText: 'TIMESTAMP(${1:6}) WITH TIME ZONE',
    973. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    974. range,
    975. }, {
    976. label: 'TIMESTAMP WITH LOCAL TIME ZONE',
    977. kind: monaco.languages.CompletionItemKind.TypeParameter,
    978. insertText: 'TIMESTAMP WITH LOCAL TIME ZONE',
    979. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    980. range,
    981. }, {
    982. label: 'TIMESTAMP(p) WITH LOCAL TIME ZONE',
    983. kind: monaco.languages.CompletionItemKind.TypeParameter,
    984. insertText: 'TIMESTAMP(${1:6}) WITH LOCAL TIME ZONE',
    985. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    986. range,
    987. }, {
    988. label: 'INTERVAL YEAR',
    989. kind: monaco.languages.CompletionItemKind.TypeParameter,
    990. insertText: 'INTERVAL YEAR',
    991. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    992. range,
    993. }, {
    994. label: 'INTERVAL YEAR(p)',
    995. kind: monaco.languages.CompletionItemKind.TypeParameter,
    996. insertText: 'INTERVAL YEAR(${1:2})',
    997. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    998. range,
    999. }, {
    1000. label: 'INTERVAL YEAR(p) TO MONTH',
    1001. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1002. insertText: 'INTERVAL YEAR(${1:2}) TO MONTH',
    1003. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1004. range,
    1005. }, {
    1006. label: 'INTERVAL MONTH',
    1007. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1008. insertText: 'INTERVAL MONTH',
    1009. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1010. range,
    1011. }, {
    1012. label: 'INTERVAL DAY',
    1013. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1014. insertText: 'INTERVAL DAY',
    1015. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1016. range,
    1017. }, {
    1018. label: 'INTERVAL DAY(p1)',
    1019. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1020. insertText: 'INTERVAL DAY(${1:2})',
    1021. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1022. range,
    1023. }, {
    1024. label: 'INTERVAL DAY(p1) TO HOUR',
    1025. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1026. insertText: 'INTERVAL DAY(${1:2}) TO HOUR',
    1027. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1028. range,
    1029. }, {
    1030. label: 'INTERVAL DAY(p1) TO MINUTE',
    1031. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1032. insertText: 'INTERVAL DAY(${1:2}) TO MINUTE',
    1033. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1034. range,
    1035. }, {
    1036. label: 'INTERVAL DAY(p1) TO SECOND(p2)',
    1037. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1038. insertText: 'INTERVAL DAY(${1:2}) TO SECOND(${2:6})',
    1039. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1040. range,
    1041. }, {
    1042. label: 'INTERVAL HOUR',
    1043. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1044. insertText: 'INTERVAL HOUR',
    1045. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1046. range,
    1047. }, {
    1048. label: 'INTERVAL HOUR TO MINUTE',
    1049. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1050. insertText: 'INTERVAL HOUR TO MINUTE',
    1051. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1052. range,
    1053. }, {
    1054. label: 'INTERVAL HOUR TO SECOND(p2)',
    1055. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1056. insertText: 'INTERVAL HOUR TO SECOND(${1:6})',
    1057. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1058. range,
    1059. }, {
    1060. label: 'INTERVAL MINUTE',
    1061. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1062. insertText: 'INTERVAL MINUTE',
    1063. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1064. range,
    1065. }, {
    1066. label: 'INTERVAL MINUTE TO SECOND(p2)',
    1067. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1068. insertText: 'INTERVAL MINUTE TO SECOND(${1:6})',
    1069. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1070. range,
    1071. }, {
    1072. label: 'INTERVAL SECOND',
    1073. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1074. insertText: 'INTERVAL SECOND',
    1075. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1076. range,
    1077. }, {
    1078. label: 'INTERVAL SECOND(p2)',
    1079. kind: monaco.languages.CompletionItemKind.TypeParameter,
    1080. insertText: 'INTERVAL SECOND(${1:6})',
    1081. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1082. range,
    1083. }];
    1084. const operatorsExpand = [{
    1085. label: 'IS NULL',
    1086. kind: monaco.languages.CompletionItemKind.Operator,
    1087. insertText: 'IS NULL',
    1088. range,
    1089. }, {
    1090. label: 'IS NOT NULL',
    1091. kind: monaco.languages.CompletionItemKind.Operator,
    1092. insertText: 'IS NOT NULL',
    1093. range,
    1094. }, {
    1095. label: 'IS DISTINCT FROM',
    1096. kind: monaco.languages.CompletionItemKind.Operator,
    1097. insertText: 'IS DISTINCT FROM',
    1098. range,
    1099. }, {
    1100. label: 'IS NOT DISTINCT FROM',
    1101. kind: monaco.languages.CompletionItemKind.Operator,
    1102. insertText: 'IS NOT DISTINCT FROM',
    1103. range,
    1104. }, {
    1105. label: 'SIMILAR TO',
    1106. kind: monaco.languages.CompletionItemKind.Operator,
    1107. insertText: 'SIMILAR TO',
    1108. range,
    1109. }, {
    1110. label: 'IS FALSE',
    1111. kind: monaco.languages.CompletionItemKind.Operator,
    1112. insertText: 'IS FALSE',
    1113. range,
    1114. }, {
    1115. label: 'IS NOT FALSE',
    1116. kind: monaco.languages.CompletionItemKind.Operator,
    1117. insertText: 'IS NOT FALSE',
    1118. range,
    1119. }, {
    1120. label: 'IS TRUE',
    1121. kind: monaco.languages.CompletionItemKind.Operator,
    1122. insertText: 'IS TRUE',
    1123. range,
    1124. }, {
    1125. label: 'IS NOT TRUE',
    1126. kind: monaco.languages.CompletionItemKind.Operator,
    1127. insertText: 'IS NOT TRUE',
    1128. range,
    1129. }, {
    1130. label: 'IS UNKNOWN',
    1131. kind: monaco.languages.CompletionItemKind.Operator,
    1132. insertText: 'IS UNKNOWN',
    1133. range,
    1134. }, {
    1135. label: 'IS NOT UNKNOWN',
    1136. kind: monaco.languages.CompletionItemKind.Operator,
    1137. insertText: 'IS NOT UNKNOWN',
    1138. range,
    1139. }, {
    1140. label: 'PARTITIONED BY',
    1141. kind: monaco.languages.CompletionItemKind.Operator,
    1142. insertText: 'PARTITIONED BY',
    1143. range,
    1144. }, {
    1145. label: 'ORDER BY',
    1146. kind: monaco.languages.CompletionItemKind.Operator,
    1147. insertText: 'ORDER BY',
    1148. range,
    1149. }, {
    1150. label: 'CURRENT ROW',
    1151. kind: monaco.languages.CompletionItemKind.Operator,
    1152. insertText: 'CURRENT ROW',
    1153. range,
    1154. }, {
    1155. label: 'GROUP BY',
    1156. kind: monaco.languages.CompletionItemKind.Operator,
    1157. insertText: 'GROUP BY',
    1158. range,
    1159. }, {
    1160. label: 'GROUPING SETS',
    1161. kind: monaco.languages.CompletionItemKind.Operator,
    1162. insertText: 'GROUPING SETS',
    1163. range,
    1164. }, {
    1165. label: 'INNER JOIN',
    1166. kind: monaco.languages.CompletionItemKind.Operator,
    1167. insertText: 'INNER JOIN',
    1168. range,
    1169. }, {
    1170. label: 'LEFT JOIN',
    1171. kind: monaco.languages.CompletionItemKind.Operator,
    1172. insertText: 'LEFT JOIN',
    1173. range,
    1174. }, {
    1175. label: 'RIGHT JOIN',
    1176. kind: monaco.languages.CompletionItemKind.Operator,
    1177. insertText: 'RIGHT JOIN',
    1178. range,
    1179. }, {
    1180. label: 'FULL OUTER JOIN',
    1181. kind: monaco.languages.CompletionItemKind.Operator,
    1182. insertText: 'FULL OUTER JOIN',
    1183. range,
    1184. }, {
    1185. label: 'CROSS JOIN',
    1186. kind: monaco.languages.CompletionItemKind.Operator,
    1187. insertText: 'CROSS JOIN',
    1188. range,
    1189. }, {
    1190. label: 'INTERVAL n HOUR',
    1191. kind: monaco.languages.CompletionItemKind.Operator,
    1192. insertText: 'INTERVAL \'${1:1}\' HOUR',
    1193. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1194. range,
    1195. }, {
    1196. label: 'INTERVAL n MINUTE',
    1197. kind: monaco.languages.CompletionItemKind.Operator,
    1198. insertText: 'INTERVAL \'${1:1}\' MINUTE',
    1199. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1200. range,
    1201. }, {
    1202. label: 'INTERVAL n SECOND',
    1203. kind: monaco.languages.CompletionItemKind.Operator,
    1204. insertText: 'INTERVAL \'${1:1}\' SECOND',
    1205. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1206. range,
    1207. }, {
    1208. label: 'LATERAL TABLE',
    1209. kind: monaco.languages.CompletionItemKind.Operator,
    1210. insertText: 'LATERAL TABLE',
    1211. range,
    1212. }, {
    1213. label: 'UNION ALL',
    1214. kind: monaco.languages.CompletionItemKind.Operator,
    1215. insertText: 'UNION ALL',
    1216. range,
    1217. }, {
    1218. label: 'ALL ROWS PER MATCH',
    1219. kind: monaco.languages.CompletionItemKind.Operator,
    1220. insertText: 'ALL ROWS PER MATCH',
    1221. range,
    1222. }, {
    1223. label: 'ONE ROW PER MATCH',
    1224. kind: monaco.languages.CompletionItemKind.Operator,
    1225. insertText: 'ONE ROW PER MATCH',
    1226. range,
    1227. }, {
    1228. label: 'AFTER MATCH SKIP PAST LAST ROW',
    1229. kind: monaco.languages.CompletionItemKind.Operator,
    1230. insertText: 'AFTER MATCH SKIP PAST LAST ROW',
    1231. range,
    1232. }, {
    1233. label: 'AFTER MATCH SKIP TO NEXT ROW',
    1234. kind: monaco.languages.CompletionItemKind.Operator,
    1235. insertText: 'AFTER MATCH SKIP TO NEXT ROW',
    1236. range,
    1237. }, {
    1238. label: 'AFTER MATCH SKIP TO LAST',
    1239. kind: monaco.languages.CompletionItemKind.Operator,
    1240. insertText: 'AFTER MATCH SKIP TO LAST',
    1241. range,
    1242. }, {
    1243. label: 'AFTER MATCH SKIP TO FIRST',
    1244. kind: monaco.languages.CompletionItemKind.Operator,
    1245. insertText: 'AFTER MATCH SKIP TO FIRST',
    1246. range,
    1247. }];
    1248. const builtinFunctions = language.builtinFunctions.map(fun => ({
    1249. label: fun,
    1250. kind: monaco.languages.CompletionItemKind.Function,
    1251. insertText: fun,
    1252. range,
    1253. }));
    1254. const dml = [{
    1255. label: 'PRIMARY KEY',
    1256. kind: monaco.languages.CompletionItemKind.Operator,
    1257. insertText: 'PRIMARY KEY',
    1258. range,
    1259. }, {
    1260. label: 'RENAME TO',
    1261. kind: monaco.languages.CompletionItemKind.Operator,
    1262. insertText: 'RENAME TO',
    1263. range,
    1264. }, {
    1265. label: 'INSERT INTO',
    1266. kind: monaco.languages.CompletionItemKind.Operator,
    1267. insertText: 'INSERT INTO',
    1268. range,
    1269. }, {
    1270. label: 'INSERT OVERWRITE',
    1271. kind: monaco.languages.CompletionItemKind.Operator,
    1272. insertText: 'INSERT OVERWRITE',
    1273. range,
    1274. }, {
    1275. label: 'NOT ENFORCED',
    1276. kind: monaco.languages.CompletionItemKind.Operator,
    1277. insertText: 'NOT ENFORCED',
    1278. range,
    1279. }, {
    1280. label: 'IF NOT EXISTS',
    1281. kind: monaco.languages.CompletionItemKind.Operator,
    1282. insertText: 'IF NOT EXISTS',
    1283. range,
    1284. }, {
    1285. label: 'IF EXISTS',
    1286. kind: monaco.languages.CompletionItemKind.Operator,
    1287. insertText: 'IF EXISTS',
    1288. range,
    1289. }, {
    1290. label: 'EXPLAIN PLAN FOR',
    1291. kind: monaco.languages.CompletionItemKind.Operator,
    1292. insertText: 'EXPLAIN PLAN FOR',
    1293. range,
    1294. }, {
    1295. label: 'USE CATALOG',
    1296. kind: monaco.languages.CompletionItemKind.Operator,
    1297. insertText: 'USE CATALOG',
    1298. range,
    1299. }, {
    1300. label: 'CREATE TABLE',
    1301. kind: monaco.languages.CompletionItemKind.Operator,
    1302. insertText: 'CREATE TABLE',
    1303. range,
    1304. }, {
    1305. label: 'DROP TABLE',
    1306. kind: monaco.languages.CompletionItemKind.Operator,
    1307. insertText: 'DROP TABLE',
    1308. range,
    1309. }, {
    1310. label: 'ALTER TABLE',
    1311. kind: monaco.languages.CompletionItemKind.Operator,
    1312. insertText: 'ALTER TABLE',
    1313. range,
    1314. }, {
    1315. label: 'SHOW TABLES',
    1316. kind: monaco.languages.CompletionItemKind.Operator,
    1317. insertText: 'SHOW TABLES',
    1318. range,
    1319. }, {
    1320. label: 'CREATE CATALOG',
    1321. kind: monaco.languages.CompletionItemKind.Operator,
    1322. insertText: 'CREATE CATALOG',
    1323. range,
    1324. }, {
    1325. label: 'SHOW CATALOGS',
    1326. kind: monaco.languages.CompletionItemKind.Operator,
    1327. insertText: 'SHOW CATALOGS',
    1328. range,
    1329. }, {
    1330. label: 'CREATE DATABASE',
    1331. kind: monaco.languages.CompletionItemKind.Operator,
    1332. insertText: 'CREATE DATABASE',
    1333. range,
    1334. }, {
    1335. label: 'DROP DATABASE',
    1336. kind: monaco.languages.CompletionItemKind.Operator,
    1337. insertText: 'DROP DATABASE',
    1338. range,
    1339. }, {
    1340. label: 'ALTER DATABASE',
    1341. kind: monaco.languages.CompletionItemKind.Operator,
    1342. insertText: 'ALTER DATABASE',
    1343. range,
    1344. }, {
    1345. label: 'SHOW DATABASES',
    1346. kind: monaco.languages.CompletionItemKind.Operator,
    1347. insertText: 'SHOW DATABASES',
    1348. range,
    1349. }, {
    1350. label: 'CREATE VIEW',
    1351. kind: monaco.languages.CompletionItemKind.Operator,
    1352. insertText: 'CREATE VIEW',
    1353. range,
    1354. }, {
    1355. label: 'DROP VIEW',
    1356. kind: monaco.languages.CompletionItemKind.Operator,
    1357. insertText: 'DROP VIEW',
    1358. range,
    1359. }, {
    1360. label: 'SHOW VIEWS',
    1361. kind: monaco.languages.CompletionItemKind.Operator,
    1362. insertText: 'SHOW VIEWS',
    1363. range,
    1364. }, {
    1365. label: 'CREATE FUNCTION',
    1366. kind: monaco.languages.CompletionItemKind.Operator,
    1367. insertText: 'CREATE FUNCTION',
    1368. range,
    1369. }, {
    1370. label: 'DROP FUNCTION',
    1371. kind: monaco.languages.CompletionItemKind.Operator,
    1372. insertText: 'DROP FUNCTION',
    1373. range,
    1374. }, {
    1375. label: 'ALTER FUNCTION',
    1376. kind: monaco.languages.CompletionItemKind.Operator,
    1377. insertText: 'ALTER FUNCTION',
    1378. range,
    1379. }, {
    1380. label: 'SHOW FUNCTIONS',
    1381. kind: monaco.languages.CompletionItemKind.Operator,
    1382. insertText: 'SHOW FUNCTIONS',
    1383. range,
    1384. }, { // connector
    1385. label: 'connector',
    1386. kind: monaco.languages.CompletionItemKind.Property,
    1387. insertText: '\'connector\' = \'${1|hermes,kafka,kafka-0.11,kafka-0.10,http,jdbc,kudu,elasticsearch-6,elasticsearch-7,filesystem,hbase-1.4,datagen,print,blackhole|}\'',
    1388. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1389. range,
    1390. }, {
    1391. label: 'format',
    1392. kind: monaco.languages.CompletionItemKind.Property,
    1393. insertText: '\'format\' = \'${1|csv,json,avro,debezium-json,canal-json,parquet,orc|}\'',
    1394. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1395. range,
    1396. }, {
    1397. label: 'masters',
    1398. kind: monaco.languages.CompletionItemKind.Property,
    1399. insertText: '\'masters\' = \'${1}\'',
    1400. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1401. range,
    1402. }, {
    1403. label: 'table-name',
    1404. kind: monaco.languages.CompletionItemKind.Property,
    1405. insertText: '\'table-name\' = \'${1}\'',
    1406. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1407. range,
    1408. }, {
    1409. label: 'scan.request.interval',
    1410. kind: monaco.languages.CompletionItemKind.Property,
    1411. insertText: '\'scan.request.interval\' = \'${1:10s}\'',
    1412. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1413. range,
    1414. }, {
    1415. label: 'scan.fetch.bytes',
    1416. kind: monaco.languages.CompletionItemKind.Property,
    1417. insertText: '\'scan.fetch.bytes\' = \'${1:1000}\'',
    1418. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1419. range,
    1420. }, {
    1421. label: 'sink.buffer-flush.max-rows',
    1422. kind: monaco.languages.CompletionItemKind.Property,
    1423. insertText: '\'sink.buffer-flush.max-rows\' = \'${1:1000}\'',
    1424. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1425. range,
    1426. }, {
    1427. label: 'sink.buffer-flush.interval',
    1428. kind: monaco.languages.CompletionItemKind.Property,
    1429. insertText: '\'sink.buffer-flush.interval\' = \'${1:1s}\'',
    1430. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1431. range,
    1432. }, { // kafka
    1433. label: 'topic',
    1434. kind: monaco.languages.CompletionItemKind.Property,
    1435. insertText: '\'topic\' = \'${1}\'',
    1436. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1437. range,
    1438. }, {
    1439. label: 'properties.hermes.center',
    1440. kind: monaco.languages.CompletionItemKind.Property,
    1441. insertText: '\'properties.hermes.center\' = \'${1}\'',
    1442. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1443. range,
    1444. }, {
    1445. label: 'properties.hermes.cluster.id',
    1446. kind: monaco.languages.CompletionItemKind.Property,
    1447. insertText: '\'properties.hermes.cluster.id\' = \'${1}\'',
    1448. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1449. range,
    1450. }, {
    1451. label: 'properties.hermes.format',
    1452. kind: monaco.languages.CompletionItemKind.Property,
    1453. insertText: '\'properties.hermes.format\' = \'${1|binlog|}\'',
    1454. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1455. range,
    1456. }, {
    1457. label: 'properties.bootstrap.servers',
    1458. kind: monaco.languages.CompletionItemKind.Property,
    1459. insertText: '\'properties.bootstrap.servers\' = \'${1}\'',
    1460. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1461. range,
    1462. }, {
    1463. label: 'properties.group.id',
    1464. kind: monaco.languages.CompletionItemKind.Property,
    1465. insertText: '\'properties.group.id\' = \'${1}\'',
    1466. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1467. range,
    1468. }, {
    1469. label: 'scan.startup.mode',
    1470. kind: monaco.languages.CompletionItemKind.Property,
    1471. insertText: '\'scan.startup.mode\' = \'${1|earliest-offset,latest-offset,group-offsets,timestamp,specific-offsets|}\'',
    1472. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1473. range,
    1474. }, {
    1475. label: 'scan.startup.specific-offsets',
    1476. kind: monaco.languages.CompletionItemKind.Property,
    1477. insertText: '\'scan.startup.specific-offsets\' = \'${1:partition:${2},offset:${3};partition:${4},offset:${5}}\'',
    1478. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1479. range,
    1480. }, {
    1481. label: 'scan.startup.timestamp-millis',
    1482. kind: monaco.languages.CompletionItemKind.Property,
    1483. insertText: '\'scan.startup.timestamp-millis\' = \'${1}\'',
    1484. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1485. range,
    1486. }, {
    1487. label: 'sink.partitioner',
    1488. kind: monaco.languages.CompletionItemKind.Property,
    1489. insertText: '\'sink.partitioner\' = \'${1|fixed,round-robin|}\'',
    1490. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1491. range,
    1492. }, { // jdbc
    1493. label: 'url',
    1494. kind: monaco.languages.CompletionItemKind.Property,
    1495. insertText: '\'url\' = \'${1:jdbc:mysql://localhost:3306/${2}}\'',
    1496. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1497. range,
    1498. }, {
    1499. label: 'strongbox.props.url',
    1500. kind: monaco.languages.CompletionItemKind.Property,
    1501. insertText: '\'strongbox.props.url\' = \'${1}\'',
    1502. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1503. range,
    1504. }, {
    1505. label: 'strongbox.decrypt.key',
    1506. kind: monaco.languages.CompletionItemKind.Property,
    1507. insertText: '\'strongbox.decrypt.key\' = \'${1}\'',
    1508. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1509. range,
    1510. }, {
    1511. label: 'driver',
    1512. kind: monaco.languages.CompletionItemKind.Property,
    1513. insertText: '\'driver\' = \'${1:com.mysql.jdbc.Driver}\'',
    1514. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1515. range,
    1516. }, {
    1517. label: 'username',
    1518. kind: monaco.languages.CompletionItemKind.Property,
    1519. insertText: '\'username\' = \'${1}\'',
    1520. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1521. range,
    1522. }, {
    1523. label: 'password',
    1524. kind: monaco.languages.CompletionItemKind.Property,
    1525. insertText: '\'password\' = \'${1}\'',
    1526. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1527. range,
    1528. }, {
    1529. label: 'scan.partition.column',
    1530. kind: monaco.languages.CompletionItemKind.Property,
    1531. insertText: '\'scan.partition.column\' = \'${1}\'',
    1532. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1533. range,
    1534. }, {
    1535. label: 'scan.partition.num',
    1536. kind: monaco.languages.CompletionItemKind.Property,
    1537. insertText: '\'scan.partition.num\' = \'${1:5}\'',
    1538. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1539. range,
    1540. }, {
    1541. label: 'scan.partition.lower-bound',
    1542. kind: monaco.languages.CompletionItemKind.Property,
    1543. insertText: '\'scan.partition.lower-bound\' = \'${1}\'',
    1544. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1545. range,
    1546. }, {
    1547. label: 'scan.partition.upper-bound',
    1548. kind: monaco.languages.CompletionItemKind.Property,
    1549. insertText: '\'scan.partition.upper-bound\' = \'${1}\'',
    1550. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1551. range,
    1552. }, {
    1553. label: 'scan.fetch-size',
    1554. kind: monaco.languages.CompletionItemKind.Property,
    1555. insertText: '\'scan.fetch-size\' = \'${1:1000}\'',
    1556. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1557. range,
    1558. }, {
    1559. label: 'lookup.cache.max-rows',
    1560. kind: monaco.languages.CompletionItemKind.Property,
    1561. insertText: '\'lookup.cache.max-rows\' = \'${1:1000}\'',
    1562. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1563. range,
    1564. }, {
    1565. label: 'lookup.cache.ttl',
    1566. kind: monaco.languages.CompletionItemKind.Property,
    1567. insertText: '\'lookup.cache.ttl\' = \'${1:3600}\'',
    1568. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1569. range,
    1570. }, {
    1571. label: 'lookup.max-retries',
    1572. kind: monaco.languages.CompletionItemKind.Property,
    1573. insertText: '\'lookup.max-retries\' = \'${1:3}\'',
    1574. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1575. range,
    1576. }, {
    1577. label: 'sink.max-retries',
    1578. kind: monaco.languages.CompletionItemKind.Property,
    1579. insertText: '\'sink.max-retries\' = \'${1:3}\'',
    1580. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1581. range,
    1582. }, { // elasticsearch
    1583. label: 'hosts',
    1584. kind: monaco.languages.CompletionItemKind.Property,
    1585. insertText: '\'hosts\' = \'${1}\'',
    1586. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1587. range,
    1588. }, {
    1589. label: 'index',
    1590. kind: monaco.languages.CompletionItemKind.Property,
    1591. insertText: '\'index\' = \'${1}\'',
    1592. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1593. range,
    1594. }, {
    1595. label: 'document-type',
    1596. kind: monaco.languages.CompletionItemKind.Property,
    1597. insertText: '\'document-type\' = \'${1}\'',
    1598. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1599. range,
    1600. }, {
    1601. label: 'document-id.key-delimiter',
    1602. kind: monaco.languages.CompletionItemKind.Property,
    1603. insertText: '\'document-id.key-delimiter\' = \'${1:_}\'',
    1604. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1605. range,
    1606. }, {
    1607. label: 'failure-handler',
    1608. kind: monaco.languages.CompletionItemKind.Property,
    1609. insertText: '\'failure-handler\' = \'${1|fail,ignore,retry_rejected|}\'',
    1610. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1611. range,
    1612. }, {
    1613. label: 'sink.flush-on-checkpoint',
    1614. kind: monaco.languages.CompletionItemKind.Property,
    1615. insertText: '\'sink.flush-on-checkpoint\' = \'${1:true}\'',
    1616. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1617. range,
    1618. }, {
    1619. label: 'sink.bulk-flush.max-actions',
    1620. kind: monaco.languages.CompletionItemKind.Property,
    1621. insertText: '\'sink.bulk-flush.max-actions\' = \'${1:1000}\'',
    1622. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1623. range,
    1624. }, {
    1625. label: 'sink.bulk-flush.max-size',
    1626. kind: monaco.languages.CompletionItemKind.Property,
    1627. insertText: '\'sink.bulk-flush.max-size\' = \'${1:2mb}\'',
    1628. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1629. range,
    1630. }, {
    1631. label: 'sink.bulk-flush.interval',
    1632. kind: monaco.languages.CompletionItemKind.Property,
    1633. insertText: '\'sink.bulk-flush.interval\' = \'${1:1s}\'',
    1634. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1635. range,
    1636. }, {
    1637. label: 'sink.bulk-flush.backoff.strategy',
    1638. kind: monaco.languages.CompletionItemKind.Property,
    1639. insertText: '\'sink.bulk-flush.backoff.strategy\' = \'${1|DISABLED,CONSTANT,EXPONENTIAL|}\'',
    1640. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1641. range,
    1642. }, {
    1643. label: 'sink.bulk-flush.backoff.max-retries',
    1644. kind: monaco.languages.CompletionItemKind.Property,
    1645. insertText: '\'sink.bulk-flush.backoff.max-retries\' = \'${1:8}\'',
    1646. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1647. range,
    1648. }, {
    1649. label: 'sink.bulk-flush.backoff.delay',
    1650. kind: monaco.languages.CompletionItemKind.Property,
    1651. insertText: '\'sink.bulk-flush.backoff.delay\' = \'${1:50ms}\'',
    1652. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1653. range,
    1654. }, {
    1655. label: 'connection.max-retry-timeout',
    1656. kind: monaco.languages.CompletionItemKind.Property,
    1657. insertText: '\'connection.max-retry-timeout\' = \'${1}\'',
    1658. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1659. range,
    1660. }, {
    1661. label: 'connection.path-prefix',
    1662. kind: monaco.languages.CompletionItemKind.Property,
    1663. insertText: '\'connection.path-prefix\' = \'${1}\'',
    1664. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1665. range,
    1666. }, { // filesystem
    1667. label: 'sink.rolling-policy.file-size',
    1668. kind: monaco.languages.CompletionItemKind.Property,
    1669. insertText: '\'sink.rolling-policy.file-size\' = \'${1:128MB}\'',
    1670. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1671. range,
    1672. }, {
    1673. label: 'sink.rolling-policy.rollover-interval',
    1674. kind: monaco.languages.CompletionItemKind.Property,
    1675. insertText: '\'sink.rolling-policy.rollover-interval\' = \'${1:30 min}\'',
    1676. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1677. range,
    1678. }, {
    1679. label: 'sink.rolling-policy.check-interval',
    1680. kind: monaco.languages.CompletionItemKind.Property,
    1681. insertText: '\'sink.rolling-policy.check-interval\' = \'${1:1 min}\'',
    1682. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1683. range,
    1684. }, {
    1685. label: 'sink.partition-commit.trigger',
    1686. kind: monaco.languages.CompletionItemKind.Property,
    1687. insertText: '\'sink.partition-commit.trigger\' = \'${1|process-time,partition-time|}\'',
    1688. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1689. range,
    1690. }, {
    1691. label: 'sink.partition-commit.delay',
    1692. kind: monaco.languages.CompletionItemKind.Property,
    1693. insertText: '\'sink.partition-commit.delay\' = \'${1:0 s}\'',
    1694. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1695. range,
    1696. }, {
    1697. label: 'partition.time-extractor.kind',
    1698. kind: monaco.languages.CompletionItemKind.Property,
    1699. insertText: '\'partition.time-extractor.kind\' = \'${1:default}\'',
    1700. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1701. range,
    1702. }, {
    1703. label: 'partition.time-extractor.class',
    1704. kind: monaco.languages.CompletionItemKind.Property,
    1705. insertText: '\'partition.time-extractor.class\' = \'${1}\'',
    1706. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1707. range,
    1708. }, {
    1709. label: 'partition.time-extractor.timestamp-pattern',
    1710. kind: monaco.languages.CompletionItemKind.Property,
    1711. insertText: '\'partition.time-extractor.timestamp-pattern\' = \'${1}\'',
    1712. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1713. range,
    1714. }, {
    1715. label: 'sink.partition-commit.policy.kind',
    1716. kind: monaco.languages.CompletionItemKind.Property,
    1717. insertText: '\'sink.partition-commit.policy.kind\' = \'${1}\'',
    1718. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1719. range,
    1720. }, {
    1721. label: 'sink.partition-commit.policy.class',
    1722. kind: monaco.languages.CompletionItemKind.Property,
    1723. insertText: '\'sink.partition-commit.policy.class\' = \'${1}\'',
    1724. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1725. range,
    1726. }, {
    1727. label: 'sink.partition-commit.success-file.name',
    1728. kind: monaco.languages.CompletionItemKind.Property,
    1729. insertText: '\'sink.partition-commit.success-file.name\' = \'${1}\'',
    1730. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1731. range,
    1732. }, {
    1733. label: 'path',
    1734. kind: monaco.languages.CompletionItemKind.Property,
    1735. insertText: '\'path\' = \'${1}\'',
    1736. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1737. range,
    1738. }, { // hbase
    1739. label: 'zookeeper.quorum',
    1740. kind: monaco.languages.CompletionItemKind.Property,
    1741. insertText: '\'zookeeper.quorum\' = \'${1}\'',
    1742. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1743. range,
    1744. }, {
    1745. label: 'zookeeper.znode.parent',
    1746. kind: monaco.languages.CompletionItemKind.Property,
    1747. insertText: '\'zookeeper.znode.parent\' = \'${1:/hbase}\'',
    1748. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1749. range,
    1750. }, {
    1751. label: 'null-string-literal',
    1752. kind: monaco.languages.CompletionItemKind.Property,
    1753. insertText: '\'null-string-literal\' = \'${1:null}\'',
    1754. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1755. range,
    1756. }, {
    1757. label: 'sink.buffer-flush.max-size',
    1758. kind: monaco.languages.CompletionItemKind.Property,
    1759. insertText: '\'sink.buffer-flush.max-size\' = \'${1:2mb}\'',
    1760. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1761. range,
    1762. }, { // DataGen
    1763. label: 'rows-per-second',
    1764. kind: monaco.languages.CompletionItemKind.Property,
    1765. insertText: '\'rows-per-second\' = \'${1:10000}\'',
    1766. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1767. range,
    1768. }, {
    1769. label: 'fields.#.kind',
    1770. kind: monaco.languages.CompletionItemKind.Property,
    1771. insertText: '\'fields.${1}.kind\' = \'${2:random}\'',
    1772. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1773. range,
    1774. }, {
    1775. label: 'fields.#.min',
    1776. kind: monaco.languages.CompletionItemKind.Property,
    1777. insertText: '\'fields.${1}.min\' = \'${2}\'',
    1778. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1779. range,
    1780. }, {
    1781. label: 'fields.#.max',
    1782. kind: monaco.languages.CompletionItemKind.Property,
    1783. insertText: '\'fields.${1}.max\' = \'${2}\'',
    1784. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1785. range,
    1786. }, {
    1787. label: 'fields.#.length',
    1788. kind: monaco.languages.CompletionItemKind.Property,
    1789. insertText: '\'fields.${1}.length\' = \'${2:100}\'',
    1790. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1791. range,
    1792. }, {
    1793. label: 'fields.#.start',
    1794. kind: monaco.languages.CompletionItemKind.Property,
    1795. insertText: '\'fields.${1}.tart\' = \'${2}\'',
    1796. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1797. range,
    1798. }, {
    1799. label: 'fields.#.end',
    1800. kind: monaco.languages.CompletionItemKind.Property,
    1801. insertText: '\'fields.${1}.end\' = \'${2}\'',
    1802. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1803. range,
    1804. }, { // Print
    1805. label: 'print-identifier',
    1806. kind: monaco.languages.CompletionItemKind.Property,
    1807. insertText: '\'print-identifier\' = \'${1}\'',
    1808. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1809. range,
    1810. }, {
    1811. label: 'standard-error',
    1812. kind: monaco.languages.CompletionItemKind.Property,
    1813. insertText: '\'standard-error\' = \'${1:false}\'',
    1814. insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
    1815. range,
    1816. }];
    1817. const others = [{
    1818. label: 'flink.bsql',
    1819. kind: monaco.languages.CompletionItemKind.Reference,
    1820. insertText: 'flink.bsql',
    1821. range,
    1822. }, {
    1823. label: 'flink.ssql',
    1824. kind: monaco.languages.CompletionItemKind.Reference,
    1825. insertText: 'flink.ssql',
    1826. range,
    1827. }]
    1828. const suggestions = keywords
    1829. .concat(typeKeywords)
    1830. .concat(typeKeywordExpand)
    1831. .concat(operatorsExpand)
    1832. .concat(builtinFunctions)
    1833. .concat(dml)
    1834. .concat(others);
    1835. return {
    1836. suggestions
    1837. }
    1838. }
    1839. }
    1840. };