This is an automated email from the ASF dual-hosted git repository.
mrproliu pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/skywalking-banyandb-client-proto.git
The following commit(s) were added to refs/heads/main by this push:
new 73c20c3 Import BydbQL into client protocol (#4)
73c20c3 is described below
commit 73c20c3fbb00bf9a8501216e116f052c5d137e12
Author: mrproliu <[email protected]>
AuthorDate: Fri Jul 10 15:11:04 2026 +0800
Import BydbQL into client protocol (#4)
---
proto/banyandb/v1/banyandb-bydbql.proto | 67 +++++++++++++++++++++++++++++++++
scripts/sync_proto.py | 5 +++
2 files changed, 72 insertions(+)
diff --git a/proto/banyandb/v1/banyandb-bydbql.proto
b/proto/banyandb/v1/banyandb-bydbql.proto
new file mode 100644
index 0000000..7e7da77
--- /dev/null
+++ b/proto/banyandb/v1/banyandb-bydbql.proto
@@ -0,0 +1,67 @@
+// Licensed to Apache Software Foundation (ASF) under one or more contributor
+// license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright
+// ownership. Apache Software Foundation (ASF) licenses this file to you under
+// the Apache License, Version 2.0 (the "License"); you may
+// not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+syntax = "proto3";
+
+option java_package = "org.apache.skywalking.banyandb.bydbql.v1";
+
+package banyandb.bydbql.v1;
+
+import "validate/validate.proto";
+import "banyandb/v1/banyandb-measure.proto";
+import "banyandb/v1/banyandb-model.proto";
+import "banyandb/v1/banyandb-property.proto";
+import "banyandb/v1/banyandb-stream.proto";
+import "banyandb/v1/banyandb-trace.proto";
+
+// QueryRequest is the main request message for BydbQL queries
+message QueryRequest {
+ // query is the BydbQL query string
+ string query = 1 [(validate.rules).string.min_len = 1];
+ // params are bound to the `?` placeholders in the query string by their
order of appearance.
+ // The number of params must match the number of placeholders.
+ // Accepted variants depend on the placeholder's position: str/timestamp for
TIME values,
+ // str/int/null for scalar comparisons, str/int/null/str_array/int_array for
IN/MATCH/HAVING
+ // value lists (arrays expand in place), and int for LIMIT/OFFSET/TOP N
counts.
+ // binary_data is rejected everywhere.
+ repeated model.v1.TagValue params = 2;
+}
+
+// QueryResponse contains the result of a BydbQL query
+message QueryResponse {
+ // result contains the actual query result based on the query type
+ oneof result {
+ // stream_result is returned for stream queries
+ stream.v1.QueryResponse stream_result = 1;
+ // measure_result is returned for measure queries
+ measure.v1.QueryResponse measure_result = 2;
+ // property_result is returned for property queries
+ property.v1.QueryResponse property_result = 3;
+ // trace_result is returned for trace queries
+ trace.v1.QueryResponse trace_result = 4;
+ // topn_result is returned for TopN queries
+ measure.v1.TopNResponse topn_result = 5;
+ }
+}
+
+// BydbQLService provides query interface for BanyanDB Query Language (BydbQL)
+service BydbQLService {
+ // Query executes a generic BydbQL query with explicit FROM clause
+ // This endpoint requires the query to specify the resource type and name
+ // in the FROM clause (e.g., "FROM STREAM sw", "FROM MEASURE metrics")
+ rpc Query(QueryRequest) returns (QueryResponse);
+}
diff --git a/scripts/sync_proto.py b/scripts/sync_proto.py
index e8115cf..5daa221 100755
--- a/scripts/sync_proto.py
+++ b/scripts/sync_proto.py
@@ -47,6 +47,7 @@ MODULES = {
'common': {'files': 'all'},
'database': {'files': ['schema.proto', 'rpc.proto']},
'measure': {'files': 'all'},
+ 'bydbql': {'files': ['query.proto', 'rpc.proto']},
'model': {'files': 'all'},
'property': {'files': ['property.proto', 'rpc.proto']},
'stream': {'files': 'all'},
@@ -68,6 +69,10 @@ EXCLUDE_LIST = {
'messages': ['DeleteExpiredSegmentsRequest',
'DeleteExpiredSegmentsResponse', 'InternalWriteRequest'],
'rpcs': ['DeleteExpiredSegments']
},
+ 'bydbql': {
+ 'messages': [],
+ 'rpcs': []
+ },
'model': {
'messages': [],
'rpcs': []