fix: avoid parsing reserved keywords and simple strings

This commit is contained in:
Ankush Menat 2024-01-17 12:47:06 +05:30
parent 414b1beffd
commit 3facad0a25
2 changed files with 8 additions and 6 deletions

View file

@ -190,6 +190,11 @@ def is_standard(fieldname):
@lru_cache
def extract_fieldnames(field):
from frappe.database.schema import SPECIAL_CHAR_PATTERN
if not SPECIAL_CHAR_PATTERN.findall(field):
return [field]
parser = Parser(f"select {field}, _frappe_dummy from _dummy")
columns = [col for col in parser.columns if col != "_frappe_dummy"]

View file

@ -39,6 +39,7 @@ class TestReportview(FrappeTestCase):
)
self.assertEqual(extract_fieldnames("owner")[0], "owner")
self.assertEqual(extract_fieldnames("from")[0], "from")
self.assertEqual(extract_fieldnames("module")[0], "module")
@ -63,9 +64,7 @@ class TestReportview(FrappeTestCase):
"tabAddress.name",
)
self.assertEqual(
extract_fieldnames("EXTRACT(MONTH FROM date_column) AS month")[0], "date_column"
)
self.assertEqual(extract_fieldnames("EXTRACT(MONTH FROM date_column) AS month")[0], "date_column")
self.assertEqual(extract_fieldnames("COUNT(*) AS count")[0], "*")
@ -89,6 +88,4 @@ class TestReportview(FrappeTestCase):
self.assertEqual(extract_fieldnames("tablefield.fiedname")[0], "tablefield.fiedname")
self.assertEqual(
extract_fieldnames("`tabChild DocType`.`fiedname`")[0], "tabChild DocType.fiedname"
)
self.assertEqual(extract_fieldnames("`tabChild DocType`.`fiedname`")[0], "tabChild DocType.fiedname")