CREATE TABLE test ( ts timestamp(3) time index, host STRING, idc STRING, val BIGINT, PRIMARY KEY(host, idc), ); INSERT INTO TABLE test VALUES (0, 'host1', 'idc1', 1), (0, 'host2', 'idc1', 2), (5000, 'host1', 'idc2:zone1',3), (5000, 'host2', 'idc2',4), (10000, 'host1', 'idc3:zone2',5), (10000, 'host2', 'idc3',6), (15000, 'host1', 'idc4:zone3',7), (15000, 'host2', 'idc4',8); -- Missing source labels -- TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "new_host", "-"); -- dst_label is equal to source label -- -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "host", "-", "host"); -- dst_label is in source labels -- -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "host", "-", "idc", "host"); -- test the empty source label -- -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "host", "-", ""); -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "new_host", "-", "idc", "host"); -- Should return empty result instead of error tql eval label_join(demo_num_cpus, "new_label", "-", "instance", "job"); -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_replace(test{host="host1"}, "new_idc", "$2", "idc", "(.*):(.*)"); -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_replace(test{host="host1"}, "new_idc", "idc99", "idc", "idc2.*"); -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_replace(test{host="host2"}, "new_idc", "$2", "idc", "(.*):(.*)"); -- dst_label is equal to source label -- -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_replace(test{host="host2"}, "idc", "$2", "idc", "(.*):(.*)"); -- test the empty source label -- -- TODO(dennis): we can't remove the label currently -- -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_replace(test{host="host2"}, "idc2", "", "", ""); -- Issue 5726 -- -- SQLNESS SORT_RESULT 3 1 TQL EVAL(0, 15, '5s') label_replace(vector(1), "host", "host1", "", ""); -- SQLNESS SORT_RESULT 3 1 TQL EVAL(0, 15, '5s') {__name__="test",host="host1"} * label_replace(vector(1), "host", "host1", "", ""); -- SQLNESS SORT_RESULT 3 1 TQL EVAL(0, 15, '5s') {__name__="test",host="host1"} + label_replace(vector(1), "host", "host1", "", ""); -- Empty regex with existing source label -- SQLNESS SORT_RESULT 3 1 TQL EVAL(0, 15, '5s') label_replace(test{host="host1"}, "host2", "host2", "host", ""); -- Empty regex with not existing source label -- SQLNESS SORT_RESULT 3 1 TQL EVAL(0, 15, '5s') label_replace(test{host="host1"}, "host2", "host2", "instance", ""); -- Empty regex with not existing source label, but replacement is empty -- SQLNESS SORT_RESULT 3 1 TQL EVAL(0, 15, '5s') label_replace(test{host="host1"}, "host2", "", "instance", ""); -- Empty regex and different label value -- SQLNESS SORT_RESULT 3 1 TQL EVAL(0, 15, '5s') {__name__="test",host="host1"} * label_replace(vector(1), "host", "host2", "host", ""); -- Empty regex and not existing label in left expression -- SQLNESS SORT_RESULT 3 1 TQL EVAL(0, 15, '5s') {__name__="test",host="host1"} * label_replace(vector(1), "addr", "host1", "instance", ""); TQL EVAL label_replace(demo_num_cpus, "~invalid", "", "src", "(.*)"); TQL EVAL label_replace(demo_num_cpus, "job", "value", "src", "(.*"); -- Issue 6438 -- -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_replace(test{host="host1"}, "new_idc", "idc99", "idc", "idc2.*") == 1.0; -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "new_host", "-", "idc", "host") == 3; DROP TABLE test; CREATE TABLE test ( ts timestamp(3) time index, host STRING, val BIGINT, PRIMARY KEY(host), ); INSERT INTO TABLE test VALUES (0, 'host1', 1), (0, 'host2', 2); SELECT * FROM test; -- test the non-existent matchers -- TQL EVAL (0, 1, '5s') test{job=~"host1|host3"}; -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 1, '5s') test{job=~".*"}; TQL EVAL (0, 1, '5s') test{job=~".+"}; -- SQLNESS SORT_RESULT 3 1 TQL EVAL (0, 1, '5s') test{job=""}; TQL EVAL (0, 1, '5s') test{job!=""}; DROP TABLE test;