From 64c263d1cf23489704ffd5e9c798b2fa675b424b Mon Sep 17 00:00:00 2001 From: antoineB Date: Tue, 26 Sep 2023 23:15:44 +0200 Subject: [PATCH] feat: add natural join --- grammar.js | 2 ++ queries/highlights.scm | 1 + test/corpus/select.txt | 17 +++++++++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/grammar.js b/grammar.js index acb15ad..a2109cd 100644 --- a/grammar.js +++ b/grammar.js @@ -75,6 +75,7 @@ module.exports = grammar({ keyword_cross: _ => make_keyword("cross"), keyword_join: _ => make_keyword("join"), keyword_lateral: _ => make_keyword("lateral"), + keyword_natural: _ => make_keyword("natural"), keyword_on: _ => make_keyword("on"), keyword_where: _ => make_keyword("where"), keyword_order: _ => make_keyword("order"), @@ -2642,6 +2643,7 @@ module.exports = grammar({ ), join: $ => seq( + optional($.keyword_natural), optional( choice( $.keyword_left, diff --git a/queries/highlights.scm b/queries/highlights.scm index a3fa5ff..e602472 100644 --- a/queries/highlights.scm +++ b/queries/highlights.scm @@ -153,6 +153,7 @@ (keyword_columns) (keyword_cross) (keyword_lateral) + (keyword_natural) (keyword_alter) (keyword_drop) (keyword_add) diff --git a/test/corpus/select.txt b/test/corpus/select.txt index d0d068a..7de7682 100644 --- a/test/corpus/select.txt +++ b/test/corpus/select.txt @@ -1229,7 +1229,9 @@ ON a.id = e.e_id FULL OUTER JOIN table_f f ON a.id = f.f_id FULL JOIN table_g g -ON a.id = g.g_id; +ON a.id = g.g_id +NATURAL JOIN table_h h +USING (id); -------------------------------------------------------------------------------- @@ -1370,7 +1372,18 @@ ON a.id = g.g_id; right: (field (object_reference name: (identifier)) - name: (identifier))))))) + name: (identifier)))) + (join + (keyword_natural) + (keyword_join) + (relation + (object_reference + name: (identifier)) + alias: (identifier)) + (keyword_using) + (list + (column + (identifier))))))) ================================================================================ Lateral join