fix: invalid select star expansions
This commit is contained in:
parent
33547a6354
commit
f642b1881f
4 changed files with 9 additions and 6 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)"), [])
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue