fix: invalid select star expansions

This commit is contained in:
Ankush Menat 2024-03-20 14:19:29 +05:30
parent 33547a6354
commit f642b1881f
4 changed files with 9 additions and 6 deletions

View file

@ -199,7 +199,7 @@ def extract_fieldnames(field):
if not columns:
f = field.lower()
if "count(" in f or "sum(" in f or "avg(" in f:
if ("count(" in f or "sum(" in f or "avg(" in f) and "*" in f:
return ["*"]
return columns

View file

@ -641,7 +641,7 @@ class DatabaseQuery:
continue
column = columns[0]
if column == "*":
if column == "*" and "*" in field:
if not in_function("*", field):
asterisk_fields.append(i)
continue

View file

@ -1173,6 +1173,11 @@ class TestDBQuery(FrappeTestCase):
data = get()
self.assertEqual(len(data["values"]), 1)
def test_select_star_expansion(self):
count = frappe.get_list("Language", ["SUM(1)", "COUNT(*)"], as_list=1, order_by=None)[0]
self.assertEqual(count[0], frappe.db.count("Language"))
self.assertEqual(count[1], frappe.db.count("Language"))
class TestReportView(FrappeTestCase):
@run_only_if(db_type_is.MARIADB) # TODO: postgres name casting is messed up

View file

@ -68,10 +68,6 @@ class TestReportview(FrappeTestCase):
self.assertEqual(extract_fieldnames("COUNT(*) AS count")[0], "*")
self.assertEqual(extract_fieldnames("COUNT(1) AS count")[0], "*")
self.assertEqual(extract_fieldnames("COUNT(1) AS count, SUM(1) AS sum")[0], "*")
self.assertEqual(
extract_fieldnames("first_name + ' ' + last_name AS full_name"), ["first_name", "last_name"]
)
@ -89,3 +85,5 @@ 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("sum(1)"), [])