From fddf73196aeb278830b8a7c7d43ce246735f31af Mon Sep 17 00:00:00 2001 From: mozart-segfy <99506635+mozart-segfy@users.noreply.github.com> Date: Wed, 22 Mar 2023 16:17:51 -0300 Subject: [PATCH] fix: better validation of CAST ... as numeric --- sqlvalidator/grammar/sql.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sqlvalidator/grammar/sql.py b/sqlvalidator/grammar/sql.py index d2c3701..4c687a7 100644 --- a/sqlvalidator/grammar/sql.py +++ b/sqlvalidator/grammar/sql.py @@ -553,7 +553,11 @@ def __str__(self): def validate(self, known_fields): errors = super().validate(known_fields) - for a in self.args: + if self.function_name == 'cast': + tovalidate = [xa for xa in self.args if xa != 'AS'] + else: + tovalidate = self.args + for a in tovalidate: errors += a.validate(known_fields) return errors @@ -835,7 +839,7 @@ def validate(self, known_fields): class Type(Expression): - VALUES = ("int", "float", "day", "month", "timestamp", "int64", "string", "date") + VALUES = ("int", "float", "day", "month", "timestamp", "int64", "string", "date", "numeric") def __str__(self): return self.value.upper()