Skip to content

Commit dab6384

Browse files
author
Piotr Kołaczkowski
committed
Test disabling query planner metrics
1 parent 59029a8 commit dab6384

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

test/unit/org/apache/cassandra/index/sai/metrics/QueryMetricsTest.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,8 @@ private void verifyHistogramCount(String name, boolean hasPerQueryKindMetrics)
655655
@Test
656656
public void testQueryPlannerMetrics()
657657
{
658+
CassandraRelevantProperties.SAI_QUERY_PLAN_METRICS_ENABLED.setBoolean(true);
659+
658660
String table = createTable("CREATE TABLE %s (k int PRIMARY KEY, lc int, hc int)");
659661
createIndex("CREATE CUSTOM INDEX ON %s(lc) USING 'StorageAttachedIndex'");
660662
createIndex("CREATE CUSTOM INDEX ON %s(hc) USING 'StorageAttachedIndex'");
@@ -739,6 +741,62 @@ public void testQueryPlannerMetrics()
739741
assertTrue(newLogSelectivityEstimated > oldLogSelectivityEstimated);
740742
}
741743

744+
@Test
745+
public void testDisableQueryPlanMetrics()
746+
{
747+
CassandraRelevantProperties.SAI_QUERY_PLAN_METRICS_ENABLED.setBoolean(false);
748+
749+
String table = createTable("CREATE TABLE %s (k int PRIMARY KEY, lc int, hc int)");
750+
createIndex("CREATE CUSTOM INDEX ON %s(lc) USING 'StorageAttachedIndex'");
751+
createIndex("CREATE CUSTOM INDEX ON %s(hc) USING 'StorageAttachedIndex'");
752+
753+
int numRows = 10000;
754+
for (int i = 0; i < numRows; i++)
755+
{
756+
execute("INSERT INTO %s (k, lc, hc) VALUES (?, ?, ?)", i, i % 2, i);
757+
}
758+
759+
flush();
760+
761+
// Check if SAI queries still work correctly when plan metrics are disabled
762+
UntypedResultSet rows;
763+
rows = execute("SELECT k FROM %s WHERE lc = 0");
764+
assertEquals(numRows / 2, rows.size());
765+
rows = execute("SELECT k FROM %s WHERE lc = 0 AND hc < 10");
766+
assertEquals(5, rows.size());
767+
rows = execute("SELECT k FROM %s WHERE lc = 0 ORDER BY hc LIMIT 100");
768+
assertEquals(100, rows.size());
769+
rows = execute("SELECT k FROM %s WHERE k = 1 AND hc = 1");
770+
assertEquals(1, rows.size());
771+
772+
// Check if metrics aren't updated
773+
ObjectName objectName;
774+
objectName = objectNameNoIndex("RowsToReturnEstimated", KEYSPACE, table, PER_QUERY_METRIC_TYPE);
775+
waitForHistogramCountEquals(objectName, 0);
776+
objectName = objectNameNoIndex("RowsToFetchEstimated", KEYSPACE, table, PER_QUERY_METRIC_TYPE);
777+
waitForHistogramCountEquals(objectName, 0);
778+
objectName = objectNameNoIndex("KeysToIterateEstimated", KEYSPACE, table, PER_QUERY_METRIC_TYPE);
779+
waitForHistogramCountEquals(objectName, 0);
780+
objectName = objectNameNoIndex("CostEstimated", KEYSPACE, table, PER_QUERY_METRIC_TYPE);
781+
waitForHistogramCountEquals(objectName, 0);
782+
objectName = objectNameNoIndex("LogSelectivityEstimated", KEYSPACE, table, PER_QUERY_METRIC_TYPE);
783+
waitForHistogramCountEquals(objectName, 0);
784+
785+
objectName = objectNameNoIndex("IndexReferencesInQuery", KEYSPACE, table, PER_QUERY_METRIC_TYPE);
786+
waitForHistogramCountEquals(objectName, 0);
787+
objectName = objectNameNoIndex("IndexReferencesInPlan", KEYSPACE, table, PER_QUERY_METRIC_TYPE);
788+
waitForHistogramCountEquals(objectName, 0);
789+
790+
objectName = objectNameNoIndex("TotalRowsToReturnEstimated", KEYSPACE, table, TABLE_QUERY_METRIC_TYPE);
791+
waitForEquals(objectName, 0);
792+
objectName = objectNameNoIndex("TotalRowsToFetchEstimated", KEYSPACE, table, TABLE_QUERY_METRIC_TYPE);
793+
waitForEquals(objectName, 0);
794+
objectName = objectNameNoIndex("TotalKeysToIterateEstimated", KEYSPACE, table, TABLE_QUERY_METRIC_TYPE);
795+
waitForEquals(objectName, 0);
796+
objectName = objectNameNoIndex("TotalCostEstimated", KEYSPACE, table, TABLE_QUERY_METRIC_TYPE);
797+
waitForEquals(objectName, 0);
798+
}
799+
742800
private ObjectName objectName(String name, String type)
743801
{
744802
return objectNameNoIndex(name, KEYSPACE, currentTable(), type);

0 commit comments

Comments
 (0)