This repository has been archived by the owner on Sep 27, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 623
[15721] Peloton Self-Driving Infrastructure #1346
Open
ChTimTsubasa
wants to merge
132
commits into
cmu-db:master
Choose a base branch
from
ChTimTsubasa:721-Proj3
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
132 commits
Select commit
Hold shift + click to select a range
5d737ff
remove dead code
d43cbe9
add comment on tuple.h
2c1984f
add in stats_aggregator
e348c6d
implement memory metric header
072e953
replace txn latency with query latency
swimj 45b1003
init stats aggregator in a correct way
62e7f0b
implement memory chaning interface
1f17bea
insert memory allocation interpolation in tile group header
8174d2a
hookup result to catalog
d57225f
Save work
tli2 53d4646
Wrote code to ship catalogs over. Not tested
tli2 1963520
Add GetName to all catalogs
tli2 7bcaed8
fix compilation
tli2 13022b6
Save work
tli2 454afb1
Fix duplicate index creation.
tli2 c1cc44e
fix alloc decre bug
815bf7e
add stats for tile with table id specified
754901b
reorder arguments (style)
swimj f68eafd
begin new stats api
swimj 412ebb9
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
swimj de6bf06
begin stats_collector skeleton
swimj 912120f
Revert "reorder arguments (style)"
swimj 5ed257d
Begin potential abstract_metric refactor
swimj b6e6183
Begin potential abstract_metric refactor
swimj 8c94a22
Make collector skeleton consistent with new point/interval metric API
swimj 912e383
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
swimj 783d5aa
differentiate tuple/index RUID
swimj 6135ca2
define collection point type
swimj 3cc0df7
implement point_metric atomic collect
swimj c1ad72c
modify interface
tli2 089191e
Fix compilation
tli2 8875cd2
replace txn latency with query latency
swimj b21fd1a
Save work
tli2 69c86f1
Wrote code to ship catalogs over. Not tested
tli2 a4023da
Add GetName to all catalogs
tli2 06123cd
fix compilation
tli2 2cfe609
Cherry-picked brain and query latency related code
tli2 2261123
fix stats_collector compile with EnumHash
swimj 8f24617
Address some code review comments
tli2 f3bde6d
write mock end-to-end txn abort collect
swimj 7b0895d
Change stats framework to have thread-local collectors and add thread…
tli2 5f3064b
Add example for how to write new metric
tli2 7ce0c13
Start writing stats aggregator
tli2 5504eba
save work
tli2 b0b6f83
Finish writing aggregation
tli2 c8e1059
Add documentation and API enhancements.
tli2 8e7bd38
Use lower case for file name
tli2 12401dd
fix constructor bug
tli2 61a200e
Finish comment...
tli2 ad09d0c
write IndexMetricRawData
swimj 6f1ff1d
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
swimj 6db57e9
write IndexMetric and plug in to BW tree
swimj 66ff52e
write new table metric
swimj 95a5143
document CounterType enum
swimj 8b9b16a
fix QueryLatencyOld compile
swimj 4a2dc58
start on memory
b1c82da
format change and a race condition fix
368c0c3
Add assertion
tli2 3856066
add back aggregate in cpp and do format check
d12d166
implement iterator wrapper for lock free array and hookup memory allo…
bbb146e
Change code to use concurrent map
tli2 481f672
Fix compilation
tli2 3b6b968
Address code review comments
tli2 b99b061
refactor tuple stats collection, plug in new stats collection system
1b33d8e
refactor index metric api
649295a
add cpp for stats collector. forgot to do so
6b7bb41
write latency metric; minor memory metric fix
swimj 949dad9
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
swimj ce38a43
hook up new query metric
swimj 53799a6
remove processing logic from thread_level_stats_collector; make index…
swimj a399015
reorganize some include dependencies to speed up compile
swimj 2f024d9
change collector_map_ to static class variable, other small things
swimj cf4eaaa
implement latency aggregation
swimj 67b6eb8
begin implementing WriteToCatalog
swimj a81b219
add index metric WriteToCatalog, note some to-dos
swimj 98fdb11
Add some documentation
tli2 72c2e6b
Cosmetic changes and documentation
tli2 0b09184
Merge branch 'sync' into 721-Proj3
tli2 5b2b44f
Import old code for memory usage fetching
368d602
Make every compile and add in referenced tile group id set
f136fc9
add memory stats interface for Varlen Pool. Also add some include pat…
ed26941
Add in code to fetch memory stats. Code compiled.
51394a2
Format
6706f10
fix stats_test compile
swimj 37f515f
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
swimj 25e1862
write more comments
swimj c0ab45e
fix query latency metric to respect codegen's async API
swimj 7524dfc
Add in index metric collections
174c1f3
Fix some index metric typos and bugs
9a9fc0e
Remove old metric stats and get in new stats.
8c92bf5
Remove duplicate include and change header comments
6db04f2
Delete a bunch of old metric type.
a69ac70
Remove Query Metric Catalog and the fix package include.
818c9e0
fix TableMetric/IndexMetric aggregate initialization error
swimj 9762806
minor changes
swimj 0290d42
Merge branch 'master' of https://github.com/cmu-db/peloton into 721-P…
tli2 d255c82
Fix test merge conflicts
tli2 6dc5831
fix some tests (will need to change back soon lol)
tli2 900126a
Disable stats test for now
tli2 8036414
Fix all tests except for query logger test
tli2 bc0bacd
change place to log statistics
dd85251
Fix all tests with stats turned on except for query logger
tli2 f046a6a
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
tli2 fdae6c2
remove if clauses around stats collection of latency metric
c7da1a1
add test metric and testing code, add desctructor of Abstract Metric …
4a03388
internal type for test stats mode
ae71879
test metric done
56d0fdf
format
43748b9
write update table metric catalog api
swimj 1f835d1
implement working table metric catalog update
swimj 8a87b19
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
swimj db95e98
address request, address validation and change header
a9e8b65
implement database metric write to catalog
swimj 617851a
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
swimj 819af2d
Save work
tli2 3fafea2
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
tli2 53d6e95
implement index metric write to catalog
swimj 46ac7cb
Add TupleAccess metric
tli2 cb3d75d
fix documentation for FetchData()
swimj 4562be6
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
tli2 f61a7fc
Merge branch '721-Proj3' of https://github.com/ChTimTsubasa/peloton i…
tli2 f63adc4
combine FetchData with WriteToCatalog“
2070d93
seperate varlen & inline memory stats
908ce19
Hook up TupleAccessMetric
tli2 8044049
Hack job to make collection only work for external transactions
tli2 569d947
Try siva's suggestion on fix for query log test
9feaf0a
Instantiate TupleAccessMetricCatalog
06b093d
Add comments to abstract metrics
e55f73a
Change catalog data counter type to BIGINT. Fix IndexMetricSearching …
86f23d6
Commit txn that previously not being committed
08e606f
Implement some util for concrete stats metric tests. Implement table …
e12d0a2
fix table metric, add table and index metric test
swimj File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
//===----------------------------------------------------------------------===// | ||
// | ||
// Peloton | ||
// | ||
// catalog_sync_brain_job.cpp | ||
// | ||
// Identification: src/brain/catalog_sync_brain_job.cpp | ||
// | ||
// Copyright (c) 2015-2018, Carnegie Mellon University Database Group | ||
// | ||
//===----------------------------------------------------------------------===// | ||
#include "brain/catalog_sync_brain_job.h" | ||
|
||
namespace peloton { | ||
namespace brain { | ||
void CatalogSyncBrainJob::OnJobInvocation(BrainEnvironment *env) { | ||
auto &manager = concurrency::TransactionManagerFactory::GetInstance(); | ||
for (auto *catalog : catalog::Catalog::GetInstance()->AvailableCatalogs()) | ||
SyncCatalog(catalog, env, manager); | ||
} | ||
|
||
time_t CatalogSyncBrainJob::TimeFromString(const char *str) { | ||
struct tm tm; | ||
PELOTON_MEMSET(&tm, 0, sizeof(struct tm)); | ||
strptime(str, "%Y-%m-%d %H:%M:%S", &tm); | ||
return mktime(&tm); | ||
} | ||
|
||
std::string CatalogSyncBrainJob::FetchCatalogQuery(catalog::AbstractCatalog *catalog) { | ||
// We need to special cast these two tables because we cannot put a reasonable | ||
// primary key on them without sequences | ||
if (catalog->GetName() == QUERY_HISTORY_CATALOG_NAME) | ||
return "SELECT * FROM pg_catalog." + std::string(QUERY_HISTORY_CATALOG_NAME) | ||
+ " WHERE timestamp > " + std::to_string(last_history_timestamp_); | ||
else | ||
return "SELECT * FROM pg_catalog." + catalog->GetName(); | ||
} | ||
|
||
void CatalogSyncBrainJob::UpdateTimestamp(catalog::AbstractCatalog *catalog, | ||
pqxx::field field) { | ||
if (catalog->GetName() == QUERY_HISTORY_CATALOG_NAME | ||
&& field.name() == std::string("timestamp")) | ||
last_history_timestamp_ = | ||
std::max(last_history_timestamp_, field.as<int64_t>()); | ||
} | ||
|
||
void CatalogSyncBrainJob::SyncCatalog(catalog::AbstractCatalog *catalog, | ||
BrainEnvironment *env, | ||
concurrency::TransactionManager &manager) { | ||
pqxx::result r = env->ExecuteQuery(FetchCatalogQuery(catalog)); | ||
for (auto row : r) { | ||
concurrency::TransactionContext *txn = | ||
manager.BeginTransaction(IsolationLevelType::REPEATABLE_READS); | ||
catalog::Schema *catalog_schema = catalog->GetDataTable()->GetSchema(); | ||
std::unique_ptr<storage::Tuple> tuple( | ||
new storage::Tuple(catalog_schema, true)); | ||
for (auto field : row) { | ||
oid_t column_id = catalog_schema->GetColumnID(field.name()); | ||
tuple->SetValue(column_id, PqxxFieldToPelotonValue(field)); | ||
UpdateTimestamp(catalog, field); | ||
} | ||
catalog->InsertTuple(std::move(tuple), txn); | ||
// We know this will always succeed on the brain side | ||
manager.CommitTransaction(txn); | ||
} | ||
} | ||
|
||
type::Value CatalogSyncBrainJob::PqxxFieldToPelotonValue(pqxx::field &f) { | ||
type::TypeId type = PostgresValueTypeToPelotonValueType( | ||
static_cast<PostgresValueType>(f.type())); | ||
if (f.is_null()) { | ||
return type == peloton::type::TypeId::VARCHAR | ||
? type::ValueFactory::GetVarcharValue("") | ||
: type::ValueFactory::GetNullValueByType(type); | ||
} | ||
switch (type) { | ||
case type::TypeId::BOOLEAN: | ||
return type::ValueFactory::GetBooleanValue(f.as<bool>()); | ||
case type::TypeId::TINYINT: | ||
return type::ValueFactory::GetTinyIntValue(static_cast<int8_t>(f.as< | ||
int32_t>())); | ||
case type::TypeId::SMALLINT: | ||
return type::ValueFactory::GetSmallIntValue(static_cast<int16_t>(f.as< | ||
int32_t>())); | ||
case type::TypeId::INTEGER: | ||
return type::ValueFactory::GetIntegerValue(f.as<int32_t>()); | ||
case type::TypeId::BIGINT: | ||
return type::ValueFactory::GetBigIntValue(f.as<int64_t>()); | ||
case type::TypeId::TIMESTAMP: | ||
return type::ValueFactory::GetTimestampValue(TimeFromString(f.c_str())); | ||
case type::TypeId::DECIMAL: | ||
return type::ValueFactory::GetDecimalValue(f.as<double>()); | ||
case type::TypeId::VARCHAR:return type::ValueFactory::GetVarcharValue(f.c_str()); | ||
default: | ||
throw ConversionException(StringUtil::Format( | ||
"No corresponding c++ type for postgres type %d", | ||
static_cast<int>(type))); | ||
} | ||
} | ||
|
||
} // namespace brain | ||
} // nanespace peloton |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In line 198 of this file, the flag should be brain_data_collection. Probably the reason why query_logger_test is failing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Change it. Still failing the test. The log is
174: 2018-05-13 10:48:16 [test/sql/testing_sql_util.cpp:60:ExecuteSQLQuery] INFO - Query: SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;
174: 2018-05-13 10:48:16 [src/codegen/operator/table_scan_translator.cpp:40:TableScanTranslator] DEBUG - Constructing TableScanTranslator ...
174: 2018-05-13 10:48:16 [test/sql/testing_sql_util.cpp:95:ExecuteSQLQuery] INFO - Statement executed. Result: SUCCESS
174: 2018-05-13 10:48:21 [test/sql/testing_sql_util.cpp:60:ExecuteSQLQuery] INFO - Query: SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;
174: 2018-05-13 10:48:21 [test/sql/testing_sql_util.cpp:95:ExecuteSQLQuery] INFO - Statement executed. Result: SUCCESS
174: 2018-05-13 10:48:26 [test/sql/testing_sql_util.cpp:60:ExecuteSQLQuery] INFO - Query: SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;
174: 2018-05-13 10:48:26 [test/sql/testing_sql_util.cpp:95:ExecuteSQLQuery] INFO - Statement executed. Result: SUCCESS
174: 2018-05-13 10:48:31 [test/sql/testing_sql_util.cpp:60:ExecuteSQLQuery] INFO - Query: SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;
174: 2018-05-13 10:48:31 [test/sql/testing_sql_util.cpp:95:ExecuteSQLQuery] INFO - Statement executed. Result: SUCCESS
174: 2018-05-13 10:48:36 [test/sql/testing_sql_util.cpp:60:ExecuteSQLQuery] INFO - Query: SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;
174: 2018-05-13 10:48:36 [test/sql/testing_sql_util.cpp:95:ExecuteSQLQuery] INFO - Statement executed. Result: SUCCESS
174: 2018-05-13 10:48:41 [test/sql/testing_sql_util.cpp:60:ExecuteSQLQuery] INFO - Query: SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;
174: 2018-05-13 10:48:41 [test/sql/testing_sql_util.cpp:95:ExecuteSQLQuery] INFO - Statement executed. Result: SUCCESS
174: /home/tianyi/Documents/project/peloton/test/sql/testing_sql_util.cpp:274: Failure
174: Value of: actual_result.size()
174: Actual: 10
174: Expected: ref_result.size()
174: Which is: 11
174: /home/tianyi/Documents/project/peloton/test/sql/testing_sql_util.cpp:282: Failure
174: Value of: actual_result
174: Actual: { "CREATE TABLE test(a INT);|015a5c39f1d456672ab662e8bf9d13598d5d87f697", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (1);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (2);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "BEGIN;|011e0b3628080f24ada46945aaaa12f4ae69ed0a3b", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (1);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "COMMIT;|01cf0fba0f1cfd731e80292bd9c5e92abbec9056d1" }
174: Expected: ref_result
174: Which is: { "CREATE TABLE test(a INT);|015a5c39f1d456672ab662e8bf9d13598d5d87f697", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (1);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (2);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "BEGIN;|011e0b3628080f24ada46945aaaa12f4ae69ed0a3b", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (1);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "COMMIT;|01cf0fba0f1cfd731e80292bd9c5e92abbec9056d1" }
174: 2018-05-13 10:48:46 [test/sql/testing_sql_util.cpp:60:ExecuteSQLQuery] INFO - Query: SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;
174: 2018-05-13 10:48:46 [test/sql/testing_sql_util.cpp:95:ExecuteSQLQuery] INFO - Statement executed. Result: SUCCESS
174: /home/tianyi/Documents/project/peloton/test/sql/testing_sql_util.cpp:274: Failure
174: Value of: actual_result.size()
174: Actual: 12
174: Expected: ref_result.size()
174: Which is: 13
174: /home/tianyi/Documents/project/peloton/test/sql/testing_sql_util.cpp:282: Failure
174: Value of: actual_result
174: Actual: { "CREATE TABLE test(a INT);|015a5c39f1d456672ab662e8bf9d13598d5d87f697", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (1);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (2);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "BEGIN;|011e0b3628080f24ada46945aaaa12f4ae69ed0a3b", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (1);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "COMMIT;|01cf0fba0f1cfd731e80292bd9c5e92abbec9056d1", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914" }
174: Expected: ref_result
174: Which is: { "CREATE TABLE test(a INT);|015a5c39f1d456672ab662e8bf9d13598d5d87f697", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (1);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (2);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "BEGIN;|011e0b3628080f24ada46945aaaa12f4ae69ed0a3b", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "INSERT INTO test VALUES (1);|01494aa495a99247b2fe92808c6ae2df065e2ec101", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "COMMIT;|01cf0fba0f1cfd731e80292bd9c5e92abbec9056d1", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914", "SELECT query_string, fingerprint FROM peloton.pg_catalog.pg_query_history;|01851b97a4b7d3bc7fefc53d3b920878c08c4cc914" }