aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/scripts/python/exported-sql-viewer.py
diff options
context:
space:
mode:
authorAdrian Hunter <adrian.hunter@intel.com>2019-02-22 02:27:26 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2019-02-22 14:52:07 -0500
commit0d5f8f230c67d911fa5c3b868eb4529ecd6faf34 (patch)
treecd3d73e05b5a07b60b52604d172526e34e7fe92a /tools/perf/scripts/python/exported-sql-viewer.py
parent1c3ca1b3ae35d5cc6cedb85a03bc314699339874 (diff)
perf scripts python: exported-sql-viewer.py: Remove SQLTableDialogDataItem
Remove SQLTableDialogDataItem as it is no longer used. Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/scripts/python/exported-sql-viewer.py')
-rwxr-xr-xtools/perf/scripts/python/exported-sql-viewer.py221
1 files changed, 0 insertions, 221 deletions
diff --git a/tools/perf/scripts/python/exported-sql-viewer.py b/tools/perf/scripts/python/exported-sql-viewer.py
index 63b14b80ebcd..e1c2f9e54238 100755
--- a/tools/perf/scripts/python/exported-sql-viewer.py
+++ b/tools/perf/scripts/python/exported-sql-viewer.py
@@ -1481,227 +1481,6 @@ class BranchWindow(QMdiSubWindow):
1481 else: 1481 else:
1482 self.find_bar.NotFound() 1482 self.find_bar.NotFound()
1483 1483
1484# Dialog data item converted and validated using a SQL table
1485
1486class SQLTableDialogDataItem():
1487
1488 def __init__(self, glb, label, placeholder_text, table_name, match_column, column_name1, column_name2, parent):
1489 self.glb = glb
1490 self.label = label
1491 self.placeholder_text = placeholder_text
1492 self.table_name = table_name
1493 self.match_column = match_column
1494 self.column_name1 = column_name1
1495 self.column_name2 = column_name2
1496 self.parent = parent
1497
1498 self.value = ""
1499
1500 self.widget = QLineEdit()
1501 self.widget.editingFinished.connect(self.Validate)
1502 self.widget.textChanged.connect(self.Invalidate)
1503 self.red = False
1504 self.error = ""
1505 self.validated = True
1506
1507 self.last_id = 0
1508 self.first_time = 0
1509 self.last_time = 2 ** 64
1510 if self.table_name == "<timeranges>":
1511 query = QSqlQuery(self.glb.db)
1512 QueryExec(query, "SELECT id, time FROM samples ORDER BY id DESC LIMIT 1")
1513 if query.next():
1514 self.last_id = int(query.value(0))
1515 self.last_time = int(query.value(1))
1516 QueryExec(query, "SELECT time FROM samples WHERE time != 0 ORDER BY id LIMIT 1")
1517 if query.next():
1518 self.first_time = int(query.value(0))
1519 if placeholder_text:
1520 placeholder_text += ", between " + str(self.first_time) + " and " + str(self.last_time)
1521
1522 if placeholder_text:
1523 self.widget.setPlaceholderText(placeholder_text)
1524
1525 def ValueToIds(self, value):
1526 ids = []
1527 query = QSqlQuery(self.glb.db)
1528 stmt = "SELECT id FROM " + self.table_name + " WHERE " + self.match_column + " = '" + value + "'"
1529 ret = query.exec_(stmt)
1530 if ret:
1531 while query.next():
1532 ids.append(str(query.value(0)))
1533 return ids
1534
1535 def IdBetween(self, query, lower_id, higher_id, order):
1536 QueryExec(query, "SELECT id FROM samples WHERE id > " + str(lower_id) + " AND id < " + str(higher_id) + " ORDER BY id " + order + " LIMIT 1")
1537 if query.next():
1538 return True, int(query.value(0))
1539 else:
1540 return False, 0
1541
1542 def BinarySearchTime(self, lower_id, higher_id, target_time, get_floor):
1543 query = QSqlQuery(self.glb.db)
1544 while True:
1545 next_id = int((lower_id + higher_id) / 2)
1546 QueryExec(query, "SELECT time FROM samples WHERE id = " + str(next_id))
1547 if not query.next():
1548 ok, dbid = self.IdBetween(query, lower_id, next_id, "DESC")
1549 if not ok:
1550 ok, dbid = self.IdBetween(query, next_id, higher_id, "")
1551 if not ok:
1552 return str(higher_id)
1553 next_id = dbid
1554 QueryExec(query, "SELECT time FROM samples WHERE id = " + str(next_id))
1555 next_time = int(query.value(0))
1556 if get_floor:
1557 if target_time > next_time:
1558 lower_id = next_id
1559 else:
1560 higher_id = next_id
1561 if higher_id <= lower_id + 1:
1562 return str(higher_id)
1563 else:
1564 if target_time >= next_time:
1565 lower_id = next_id
1566 else:
1567 higher_id = next_id
1568 if higher_id <= lower_id + 1:
1569 return str(lower_id)
1570
1571 def ConvertRelativeTime(self, val):
1572 mult = 1
1573 suffix = val[-2:]
1574 if suffix == "ms":
1575 mult = 1000000
1576 elif suffix == "us":
1577 mult = 1000
1578 elif suffix == "ns":
1579 mult = 1
1580 else:
1581 return val
1582 val = val[:-2].strip()
1583 if not self.IsNumber(val):
1584 return val
1585 val = int(val) * mult
1586 if val >= 0:
1587 val += self.first_time
1588 else:
1589 val += self.last_time
1590 return str(val)
1591
1592 def ConvertTimeRange(self, vrange):
1593 if vrange[0] == "":
1594 vrange[0] = str(self.first_time)
1595 if vrange[1] == "":
1596 vrange[1] = str(self.last_time)
1597 vrange[0] = self.ConvertRelativeTime(vrange[0])
1598 vrange[1] = self.ConvertRelativeTime(vrange[1])
1599 if not self.IsNumber(vrange[0]) or not self.IsNumber(vrange[1]):
1600 return False
1601 beg_range = max(int(vrange[0]), self.first_time)
1602 end_range = min(int(vrange[1]), self.last_time)
1603 if beg_range > self.last_time or end_range < self.first_time:
1604 return False
1605 vrange[0] = self.BinarySearchTime(0, self.last_id, beg_range, True)
1606 vrange[1] = self.BinarySearchTime(1, self.last_id + 1, end_range, False)
1607 return True
1608
1609 def AddTimeRange(self, value, ranges):
1610 n = value.count("-")
1611 if n == 1:
1612 pass
1613 elif n == 2:
1614 if value.split("-")[1].strip() == "":
1615 n = 1
1616 elif n == 3:
1617 n = 2
1618 else:
1619 return False
1620 pos = findnth(value, "-", n)
1621 vrange = [value[:pos].strip() ,value[pos+1:].strip()]
1622 if self.ConvertTimeRange(vrange):
1623 ranges.append(vrange)
1624 return True
1625 return False
1626
1627 def InvalidValue(self, value):
1628 self.value = ""
1629 palette = QPalette()
1630 palette.setColor(QPalette.Text,Qt.red)
1631 self.widget.setPalette(palette)
1632 self.red = True
1633 self.error = self.label + " invalid value '" + value + "'"
1634 self.parent.ShowMessage(self.error)
1635
1636 def IsNumber(self, value):
1637 try:
1638 x = int(value)
1639 except:
1640 x = 0
1641 return str(x) == value
1642
1643 def Invalidate(self):
1644 self.validated = False
1645
1646 def Validate(self):
1647 input_string = self.widget.text()
1648 self.validated = True
1649 if self.red:
1650 palette = QPalette()
1651 self.widget.setPalette(palette)
1652 self.red = False
1653 if not len(input_string.strip()):
1654 self.error = ""
1655 self.value = ""
1656 return
1657 if self.table_name == "<timeranges>":
1658 ranges = []
1659 for value in [x.strip() for x in input_string.split(",")]:
1660 if not self.AddTimeRange(value, ranges):
1661 return self.InvalidValue(value)
1662 ranges = [("(" + self.column_name1 + " >= " + r[0] + " AND " + self.column_name1 + " <= " + r[1] + ")") for r in ranges]
1663 self.value = " OR ".join(ranges)
1664 elif self.table_name == "<ranges>":
1665 singles = []
1666 ranges = []
1667 for value in [x.strip() for x in input_string.split(",")]:
1668 if "-" in value:
1669 vrange = value.split("-")
1670 if len(vrange) != 2 or not self.IsNumber(vrange[0]) or not self.IsNumber(vrange[1]):
1671 return self.InvalidValue(value)
1672 ranges.append(vrange)
1673 else:
1674 if not self.IsNumber(value):
1675 return self.InvalidValue(value)
1676 singles.append(value)
1677 ranges = [("(" + self.column_name1 + " >= " + r[0] + " AND " + self.column_name1 + " <= " + r[1] + ")") for r in ranges]
1678 if len(singles):
1679 ranges.append(self.column_name1 + " IN (" + ",".join(singles) + ")")
1680 self.value = " OR ".join(ranges)
1681 elif self.table_name:
1682 all_ids = []
1683 for value in [x.strip() for x in input_string.split(",")]:
1684 ids = self.ValueToIds(value)
1685 if len(ids):
1686 all_ids.extend(ids)
1687 else:
1688 return self.InvalidValue(value)
1689 self.value = self.column_name1 + " IN (" + ",".join(all_ids) + ")"
1690 if self.column_name2:
1691 self.value = "( " + self.value + " OR " + self.column_name2 + " IN (" + ",".join(all_ids) + ") )"
1692 else:
1693 self.value = input_string.strip()
1694 self.error = ""
1695 self.parent.ClearMessage()
1696
1697 def IsValid(self):
1698 if not self.validated:
1699 self.Validate()
1700 if len(self.error):
1701 self.parent.ShowMessage(self.error)
1702 return False
1703 return True
1704
1705# Line edit data item 1484# Line edit data item
1706 1485
1707class LineEditDataItem(object): 1486class LineEditDataItem(object):