0001 Database Export
0002 ===============
0003
0004 perf tool's python scripting engine:
0005
0006 tools/perf/util/scripting-engines/trace-event-python.c
0007
0008 supports scripts:
0009
0010 tools/perf/scripts/python/export-to-sqlite.py
0011 tools/perf/scripts/python/export-to-postgresql.py
0012
0013 which export data to a SQLite3 or PostgreSQL database.
0014
0015 The export process provides records with unique sequential ids which allows the
0016 data to be imported directly to a database and provides the relationships
0017 between tables.
0018
0019 Over time it is possible to continue to expand the export while maintaining
0020 backward and forward compatibility, by following some simple rules:
0021
0022 1. Because of the nature of SQL, existing tables and columns can continue to be
0023 used so long as the names and meanings (and to some extent data types) remain
0024 the same.
0025
0026 2. New tables and columns can be added, without affecting existing SQL queries,
0027 so long as the new names are unique.
0028
0029 3. Scripts that use a database (e.g. exported-sql-viewer.py) can maintain
0030 backward compatibility by testing for the presence of new tables and columns
0031 before using them. e.g. function IsSelectable() in exported-sql-viewer.py
0032
0033 4. The export scripts themselves maintain forward compatibility (i.e. an existing
0034 script will continue to work with new versions of perf) by accepting a variable
0035 number of arguments (e.g. def call_return_table(*x)) i.e. perf can pass more
0036 arguments which old scripts will ignore.
0037
0038 5. The scripting engine tests for the existence of script handler functions
0039 before calling them. The scripting engine can also test for the support of new
0040 or optional features by checking for the existence and value of script global
0041 variables.