Skip to content

Commit

Permalink
feat: adds timestamp column
Browse files Browse the repository at this point in the history
  • Loading branch information
killme2008 committed Jan 10, 2024
1 parent cba6d8a commit bb72a84
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 12 deletions.
25 changes: 22 additions & 3 deletions src/catalog/src/information_schema/runtime_metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,16 @@ use common_error::ext::BoxedError;
use common_query::physical_plan::TaskContext;
use common_recordbatch::adapter::RecordBatchStreamAdapter;
use common_recordbatch::{RecordBatch, SendableRecordBatchStream};
use common_time::util::current_time_millis;
use datafusion::physical_plan::stream::RecordBatchStreamAdapter as DfRecordBatchStreamAdapter;
use datafusion::physical_plan::streaming::PartitionStream as DfPartitionStream;
use datafusion::physical_plan::SendableRecordBatchStream as DfSendableRecordBatchStream;
use datatypes::prelude::{ConcreteDataType, MutableVector};
use datatypes::scalars::ScalarVectorBuilder;
use datatypes::schema::{ColumnSchema, Schema, SchemaRef};
use datatypes::vectors::{
ConstantVector, Float64VectorBuilder, StringVector, StringVectorBuilder, VectorRef,
ConstantVector, Float64VectorBuilder, StringVector, StringVectorBuilder,
TimestampMillisecondVector, VectorRef,
};
use itertools::Itertools;
use snafu::ResultExt;
Expand All @@ -45,6 +47,7 @@ const METRIC_VALUE: &str = "value";
const METRIC_LABELS: &str = "labels";
const NODE: &str = "node";
const NODE_TYPE: &str = "node_type";
const TIMESTAMP: &str = "timestamp";

/// The `information_schema.runtime_metrics` virtual table.
/// It provides the GreptimeDB runtime metrics for the users by SQL.
Expand All @@ -62,6 +65,11 @@ impl InformationSchemaMetrics {
ColumnSchema::new(METRIC_LABELS, ConcreteDataType::string_datatype(), true),
ColumnSchema::new(NODE, ConcreteDataType::string_datatype(), false),
ColumnSchema::new(NODE_TYPE, ConcreteDataType::string_datatype(), false),
ColumnSchema::new(
TIMESTAMP,
ConcreteDataType::timestamp_millisecond_datatype(),
false,
),
]))
}

Expand Down Expand Up @@ -169,8 +177,17 @@ impl InformationSchemaMetricsBuilder {
}

fn finish(&mut self) -> Result<RecordBatch> {
let unknowns = Arc::new(StringVector::from(vec!["unknown"]));
let unknowns = Arc::new(ConstantVector::new(unknowns, self.metric_names.len()));
let rows_num = self.metric_names.len();
let unknowns = Arc::new(ConstantVector::new(
Arc::new(StringVector::from(vec!["unknown"])),
rows_num,
));
let timestamps = Arc::new(ConstantVector::new(
Arc::new(TimestampMillisecondVector::from_slice([
current_time_millis(),
])),
rows_num,
));

let columns: Vec<VectorRef> = vec![
Arc::new(self.metric_names.finish()),
Expand All @@ -179,6 +196,7 @@ impl InformationSchemaMetricsBuilder {
// TODO(dennis): supports node and node_type for cluster
unknowns.clone(),
unknowns,
timestamps,
];

RecordBatch::new(self.schema.clone(), columns).context(CreateRecordBatchSnafu)
Expand Down Expand Up @@ -227,5 +245,6 @@ mod tests {
assert!(result_literal.contains(METRIC_LABELS));
assert!(result_literal.contains(NODE));
assert!(result_literal.contains(NODE_TYPE));
assert!(result_literal.contains(TIMESTAMP));
}
}
19 changes: 10 additions & 9 deletions tests/cases/standalone/common/system/information_schema.result
Original file line number Diff line number Diff line change
Expand Up @@ -611,15 +611,16 @@ select * from CHECK_CONSTRAINTS;

desc table RUNTIME_METRICS;

+-------------+---------+-----+------+---------+---------------+
| Column | Type | Key | Null | Default | Semantic Type |
+-------------+---------+-----+------+---------+---------------+
| metric_name | String | | NO | | FIELD |
| value | Float64 | | NO | | FIELD |
| labels | String | | YES | | FIELD |
| node | String | | NO | | FIELD |
| node_type | String | | NO | | FIELD |
+-------------+---------+-----+------+---------+---------------+
+-------------+----------------------+-----+------+---------+---------------+
| Column | Type | Key | Null | Default | Semantic Type |
+-------------+----------------------+-----+------+---------+---------------+
| metric_name | String | | NO | | FIELD |
| value | Float64 | | NO | | FIELD |
| labels | String | | YES | | FIELD |
| node | String | | NO | | FIELD |
| node_type | String | | NO | | FIELD |
| timestamp | TimestampMillisecond | | NO | | FIELD |
+-------------+----------------------+-----+------+---------+---------------+

use public;

Expand Down

0 comments on commit bb72a84

Please sign in to comment.