You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2021/09/25 06:09:09 UTC

[skywalking-banyandb] branch main updated: move legacy impl to v1 packages (#51)

This is an automated email from the ASF dual-hosted git repository.

hanahmily pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git


The following commit(s) were added to refs/heads/main by this push:
     new 06fa02d  move legacy impl to v1 packages (#51)
06fa02d is described below

commit 06fa02df8d3364c6650937fe64b8ef4d0d46cea1
Author: Jiajing LU <lu...@gmail.com>
AuthorDate: Sat Sep 25 14:09:04 2021 +0800

    move legacy impl to v1 packages (#51)
---
 banyand/internal/cmd/standalone.go                |  4 +-
 banyand/liaison/grpc/trace.go                     |  2 +-
 banyand/liaison/grpc/trace_test.go                | 18 ++++-----
 banyand/query/{ => v1}/processor.go               |  6 +--
 banyand/query/{ => v1}/processor_test.go          | 30 +++++++--------
 banyand/query/{ => v1}/query.go                   |  2 +-
 banyand/series/trace/common_test.go               |  4 +-
 banyand/series/trace/query.go                     | 12 +++---
 banyand/series/trace/service.go                   | 10 ++---
 banyand/series/trace/trace.go                     |  4 +-
 banyand/series/trace/write_test.go                |  4 +-
 pkg/pb/{ => v1}/database.go                       |  2 +-
 pkg/pb/{ => v1}/fields.go                         |  2 +-
 pkg/pb/{ => v1}/query.go                          |  2 +-
 pkg/pb/{ => v1}/write.go                          |  2 +-
 pkg/query/{ => v1}/executor/interface.go          |  0
 pkg/query/{ => v1}/logical/analyzer.go            |  0
 pkg/query/{ => v1}/logical/analyzer_test.go       | 46 +++++++++++------------
 pkg/query/{ => v1}/logical/common_test.go         | 26 +++++++------
 pkg/query/{ => v1}/logical/expr.go                |  0
 pkg/query/{ => v1}/logical/expr_literal.go        |  0
 pkg/query/{ => v1}/logical/format.go              |  0
 pkg/query/{ => v1}/logical/interface.go           |  2 +-
 pkg/query/{ => v1}/logical/plan.go                |  2 +-
 pkg/query/{ => v1}/logical/plan_execution_test.go | 44 +++++++++++-----------
 pkg/query/{ => v1}/logical/plan_indexscan.go      |  2 +-
 pkg/query/{ => v1}/logical/plan_orderby.go        |  2 +-
 pkg/query/{ => v1}/logical/plan_tablescan.go      |  2 +-
 pkg/query/{ => v1}/logical/plan_traceid.go        |  2 +-
 pkg/query/{ => v1}/logical/schema.go              |  0
 30 files changed, 117 insertions(+), 115 deletions(-)

diff --git a/banyand/internal/cmd/standalone.go b/banyand/internal/cmd/standalone.go
index 5ee6c22..9173ae5 100644
--- a/banyand/internal/cmd/standalone.go
+++ b/banyand/internal/cmd/standalone.go
@@ -26,7 +26,7 @@ import (
 	"github.com/apache/skywalking-banyandb/banyand/discovery"
 	"github.com/apache/skywalking-banyandb/banyand/index"
 	"github.com/apache/skywalking-banyandb/banyand/liaison"
-	"github.com/apache/skywalking-banyandb/banyand/query"
+	v1 "github.com/apache/skywalking-banyandb/banyand/query/v1"
 	"github.com/apache/skywalking-banyandb/banyand/queue"
 	"github.com/apache/skywalking-banyandb/banyand/series/trace"
 	"github.com/apache/skywalking-banyandb/banyand/storage"
@@ -65,7 +65,7 @@ func newStandaloneCmd() *cobra.Command {
 	if err != nil {
 		l.Fatal().Err(err).Msg("failed to initiate trace series")
 	}
-	q, err := query.NewExecutor(ctx, repo, idx, traceSeries, traceSeries, pipeline)
+	q, err := v1.NewExecutor(ctx, repo, idx, traceSeries, traceSeries, pipeline)
 	if err != nil {
 		l.Fatal().Err(err).Msg("failed to initiate query executor")
 	}
diff --git a/banyand/liaison/grpc/trace.go b/banyand/liaison/grpc/trace.go
index 9ee1f35..dd55aad 100644
--- a/banyand/liaison/grpc/trace.go
+++ b/banyand/liaison/grpc/trace.go
@@ -42,7 +42,7 @@ import (
 	"github.com/apache/skywalking-banyandb/pkg/convert"
 	"github.com/apache/skywalking-banyandb/pkg/logger"
 	"github.com/apache/skywalking-banyandb/pkg/partition"
-	"github.com/apache/skywalking-banyandb/pkg/query/logical"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/logical"
 	"github.com/apache/skywalking-banyandb/pkg/run"
 )
 
diff --git a/banyand/liaison/grpc/trace_test.go b/banyand/liaison/grpc/trace_test.go
index 1d002b0..624ef32 100644
--- a/banyand/liaison/grpc/trace_test.go
+++ b/banyand/liaison/grpc/trace_test.go
@@ -37,12 +37,12 @@ import (
 	"github.com/apache/skywalking-banyandb/banyand/discovery"
 	"github.com/apache/skywalking-banyandb/banyand/index"
 	"github.com/apache/skywalking-banyandb/banyand/liaison/grpc"
-	"github.com/apache/skywalking-banyandb/banyand/query"
+	v12 "github.com/apache/skywalking-banyandb/banyand/query/v1"
 	"github.com/apache/skywalking-banyandb/banyand/queue"
 	"github.com/apache/skywalking-banyandb/banyand/series/trace"
 	"github.com/apache/skywalking-banyandb/banyand/storage"
 	"github.com/apache/skywalking-banyandb/pkg/logger"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
+	v1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
 )
 
 type testData struct {
@@ -78,7 +78,7 @@ func setup(tester *require.Assertions) (*grpc.Server, *grpc.Server, func()) {
 	traceSvc, err := trace.NewService(context.TODO(), db, repo, indexSvc, pipeline)
 	tester.NoError(err)
 	// Init `Query` module
-	executor, err := query.NewExecutor(context.TODO(), repo, indexSvc, traceSvc, traceSvc, pipeline)
+	executor, err := v12.NewExecutor(context.TODO(), repo, indexSvc, traceSvc, traceSvc, pipeline)
 	tester.NoError(err)
 	// Init `liaison` module
 	tcp := grpc.NewServer(context.TODO(), pipeline, repo)
@@ -144,7 +144,7 @@ func TestTraceService(t *testing.T) {
 		{
 			name: "isTLS",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -154,7 +154,7 @@ func TestTraceService(t *testing.T) {
 					Build()
 			},
 			writeGenerator: func() *tracev1.WriteRequest {
-				entityValue := pb.NewEntityValueBuilder().
+				entityValue := v1.NewEntityValueBuilder().
 					EntityID("entityId123").
 					DataBinary([]byte{12}).
 					Fields("trace_id-xxfff.111",
@@ -166,7 +166,7 @@ func TestTraceService(t *testing.T) {
 						1622933202000000000).
 					Timestamp(time.Now()).
 					Build()
-				criteria := pb.NewWriteEntityBuilder().
+				criteria := v1.NewWriteEntityBuilder().
 					EntityValue(entityValue).
 					Metadata("default", "sw").
 					Build()
@@ -183,7 +183,7 @@ func TestTraceService(t *testing.T) {
 		{
 			name: "noTLS",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -193,7 +193,7 @@ func TestTraceService(t *testing.T) {
 					Build()
 			},
 			writeGenerator: func() *tracev1.WriteRequest {
-				entityValue := pb.NewEntityValueBuilder().
+				entityValue := v1.NewEntityValueBuilder().
 					EntityID("entityId123").
 					DataBinary([]byte{12}).
 					Fields("trace_id-xxfff.111323",
@@ -205,7 +205,7 @@ func TestTraceService(t *testing.T) {
 						1622933202000000000).
 					Timestamp(time.Now()).
 					Build()
-				criteria := pb.NewWriteEntityBuilder().
+				criteria := v1.NewWriteEntityBuilder().
 					EntityValue(entityValue).
 					Metadata("default", "sw").
 					Build()
diff --git a/banyand/query/processor.go b/banyand/query/v1/processor.go
similarity index 95%
rename from banyand/query/processor.go
rename to banyand/query/v1/processor.go
index b86f6a7..a93cd31 100644
--- a/banyand/query/processor.go
+++ b/banyand/query/v1/processor.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package query
+package v1
 
 import (
 	"context"
@@ -31,8 +31,8 @@ import (
 	"github.com/apache/skywalking-banyandb/banyand/series"
 	"github.com/apache/skywalking-banyandb/pkg/bus"
 	"github.com/apache/skywalking-banyandb/pkg/logger"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
-	"github.com/apache/skywalking-banyandb/pkg/query/logical"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/logical"
 )
 
 const (
diff --git a/banyand/query/processor_test.go b/banyand/query/v1/processor_test.go
similarity index 95%
rename from banyand/query/processor_test.go
rename to banyand/query/v1/processor_test.go
index 8cfa5d3..49feabb 100644
--- a/banyand/query/processor_test.go
+++ b/banyand/query/v1/processor_test.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package query
+package v1
 
 import (
 	"context"
@@ -41,8 +41,8 @@ import (
 	"github.com/apache/skywalking-banyandb/banyand/storage"
 	"github.com/apache/skywalking-banyandb/pkg/bus"
 	"github.com/apache/skywalking-banyandb/pkg/logger"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
-	"github.com/apache/skywalking-banyandb/pkg/query/logical"
+	v1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/logical"
 )
 
 var (
@@ -309,7 +309,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "query given timeRange is out of the time range of data",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -322,7 +322,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "query given timeRange which slightly covers the first three segments",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -336,7 +336,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "query given timeRange which slightly covers the first three segments with data binary projection",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -350,7 +350,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "query given timeRange which slightly covers the first three segments ans sort by duration",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -367,7 +367,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "query TraceID given timeRange includes the time range of data",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -382,7 +382,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "query TraceID given timeRange includes the time range of data with dataBinary projection",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -397,7 +397,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "query TraceID given timeRange includes the time range of data but limit to 1",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(1).
 					Offset(0).
 					Metadata("default", "sw").
@@ -411,7 +411,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "Numerical Index - query duration < 100",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(1).
 					Offset(0).
 					Metadata("default", "sw").
@@ -425,7 +425,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "Numerical Index - query duration <= 400",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -439,7 +439,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "Textual Index - db.type == MySQL",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -454,7 +454,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "Textual Index - db.type == MySQL with dataBinary projection",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
@@ -469,7 +469,7 @@ func TestQueryProcessor(t *testing.T) {
 		{
 			name: "Mixed Index - db.type == MySQL AND duration <= 300",
 			queryGenerator: func(baseTs time.Time) *tracev1.QueryRequest {
-				return pb.NewQueryRequestBuilder().
+				return v1.NewQueryRequestBuilder().
 					Limit(10).
 					Offset(0).
 					Metadata("default", "sw").
diff --git a/banyand/query/query.go b/banyand/query/v1/query.go
similarity index 99%
rename from banyand/query/query.go
rename to banyand/query/v1/query.go
index cbc990f..2d2f939 100644
--- a/banyand/query/query.go
+++ b/banyand/query/v1/query.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package query
+package v1
 
 import (
 	"context"
diff --git a/banyand/series/trace/common_test.go b/banyand/series/trace/common_test.go
index c5f47d1..f9b2689 100644
--- a/banyand/series/trace/common_test.go
+++ b/banyand/series/trace/common_test.go
@@ -38,7 +38,7 @@ import (
 	"github.com/apache/skywalking-banyandb/pkg/convert"
 	"github.com/apache/skywalking-banyandb/pkg/logger"
 	"github.com/apache/skywalking-banyandb/pkg/partition"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
+	v12 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
 )
 
 var _ sort.Interface = (ByEntityID)(nil)
@@ -233,7 +233,7 @@ func setupTestData(t *testing.T, ts *traceSeries, seriesEntities []seriesEntity)
 	results = make([]idWithShard, 0, len(seriesEntities))
 	for _, se := range seriesEntities {
 		seriesID := []byte(se.seriesID)
-		ev := pb.NewEntityValueBuilder().
+		ev := v12.NewEntityValueBuilder().
 			DataBinary(se.entity.binary).
 			EntityID(se.entity.id).
 			Timestamp(se.entity.t).
diff --git a/banyand/series/trace/query.go b/banyand/series/trace/query.go
index 144e6b4..522532f 100644
--- a/banyand/series/trace/query.go
+++ b/banyand/series/trace/query.go
@@ -32,7 +32,7 @@ import (
 	"github.com/apache/skywalking-banyandb/banyand/series"
 	"github.com/apache/skywalking-banyandb/pkg/convert"
 	"github.com/apache/skywalking-banyandb/pkg/partition"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
+	v12 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
 	"github.com/apache/skywalking-banyandb/pkg/posting"
 	"github.com/apache/skywalking-banyandb/pkg/posting/roaring"
 )
@@ -206,14 +206,14 @@ func (t *traceSeries) FetchEntity(chunkIDs posting.List, shardID uint, opt serie
 	return entities, err
 }
 
-func (t *traceSeries) parseFetchInfo(opt series.ScanOptions) (fetchFieldsIndices []pb.FieldEntry, err error) {
-	fetchFieldsIndices = make([]pb.FieldEntry, 0)
+func (t *traceSeries) parseFetchInfo(opt series.ScanOptions) (fetchFieldsIndices []v12.FieldEntry, err error) {
+	fetchFieldsIndices = make([]v12.FieldEntry, 0)
 	for _, p := range opt.Projection {
 		f, ok := t.fieldIndex[p]
 		if !ok {
 			return nil, errors.Wrapf(ErrFieldNotFound, "field name:%s", p)
 		}
-		fetchFieldsIndices = append(fetchFieldsIndices, pb.FieldEntry{
+		fetchFieldsIndices = append(fetchFieldsIndices, v12.FieldEntry{
 			Key:   p,
 			Index: f.idx,
 			Type:  f.spec.GetType(),
@@ -224,7 +224,7 @@ func (t *traceSeries) parseFetchInfo(opt series.ScanOptions) (fetchFieldsIndices
 }
 
 func (t *traceSeries) getEntityByInternalRef(seriesID []byte, state State, fetchDataBinary bool,
-	fetchFieldsIndices []pb.FieldEntry, shardID uint, ts uint64) (data.Entity, error) {
+	fetchFieldsIndices []v12.FieldEntry, shardID uint, ts uint64) (data.Entity, error) {
 	fieldsStore, dataStore, err := getStoreName(state)
 	if err != nil {
 		return data.Entity{}, err
@@ -246,7 +246,7 @@ func (t *traceSeries) getEntityByInternalRef(seriesID []byte, state State, fetch
 
 	// Copy selected fields
 	if len(fetchFieldsIndices) > 0 {
-		entity.Fields = pb.Transform(entityVal, fetchFieldsIndices)
+		entity.Fields = v12.Transform(entityVal, fetchFieldsIndices)
 	}
 
 	if fetchDataBinary {
diff --git a/banyand/series/trace/service.go b/banyand/series/trace/service.go
index 05fd04c..72f73b0 100644
--- a/banyand/series/trace/service.go
+++ b/banyand/series/trace/service.go
@@ -36,7 +36,7 @@ import (
 	"github.com/apache/skywalking-banyandb/banyand/storage"
 	"github.com/apache/skywalking-banyandb/pkg/bus"
 	"github.com/apache/skywalking-banyandb/pkg/logger"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
+	v1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
 )
 
 var _ series.Service = (*service)(nil)
@@ -93,7 +93,7 @@ func (s *service) PreRun() error {
 func (s *service) Serve() error {
 	now := time.Now().UnixNano()
 	for _, sMeta := range s.schemaMap {
-		e := pb.NewSeriesEventBuilder().
+		e := v1.NewSeriesEventBuilder().
 			SeriesMetadata(sMeta.group, sMeta.name).
 			FieldNames(sMeta.fieldsNamesCompositeSeriesID...).
 			Time(time.Now()).
@@ -117,11 +117,11 @@ func (s *service) Serve() error {
 		shardedRuleIndex := make([]*databasev1.IndexRuleEvent_ShardedIndexRule, 0, len(rules)*int(sMeta.shardNum))
 		for i := 0; i < int(sMeta.shardNum); i++ {
 			t := time.Now()
-			e := pb.NewShardEventBuilder().Action(databasev1.Action_ACTION_PUT).Time(t).
+			e := v1.NewShardEventBuilder().Action(databasev1.Action_ACTION_PUT).Time(t).
 				Shard(
-					pb.NewShardBuilder().
+					v1.NewShardBuilder().
 						ID(uint64(i)).Total(sMeta.shardNum).SeriesMetadata(sMeta.group, sMeta.name).UpdatedAt(t).CreatedAt(t).
-						Node(pb.NewNodeBuilder().
+						Node(v1.NewNodeBuilder().
 							ID(s.repo.NodeID()).CreatedAt(t).UpdatedAt(t).Addr("localhost").
 							Build()).
 						Build()).
diff --git a/banyand/series/trace/trace.go b/banyand/series/trace/trace.go
index c64d871..2cf79a1 100644
--- a/banyand/series/trace/trace.go
+++ b/banyand/series/trace/trace.go
@@ -35,7 +35,7 @@ import (
 	"github.com/apache/skywalking-banyandb/pkg/convert"
 	"github.com/apache/skywalking-banyandb/pkg/logger"
 	"github.com/apache/skywalking-banyandb/pkg/partition"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
+	v1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
 	posting2 "github.com/apache/skywalking-banyandb/pkg/posting"
 )
 
@@ -114,7 +114,7 @@ func (s *service) Write(traceSeriesMetadata common.Metadata, ts time.Time, serie
 		return false, err
 	}
 
-	ev := pb.NewEntityValueBuilder().
+	ev := v1.NewEntityValueBuilder().
 		DataBinary(dataBinary).
 		EntityID(entityID).
 		Fields(items...).
diff --git a/banyand/series/trace/write_test.go b/banyand/series/trace/write_test.go
index 18e4956..e2a1872 100644
--- a/banyand/series/trace/write_test.go
+++ b/banyand/series/trace/write_test.go
@@ -25,7 +25,7 @@ import (
 	"github.com/apache/skywalking-banyandb/api/data"
 	"github.com/apache/skywalking-banyandb/pkg/convert"
 	"github.com/apache/skywalking-banyandb/pkg/partition"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
+	v1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
 )
 
 func Test_traceSeries_Write(t *testing.T) {
@@ -172,7 +172,7 @@ func Test_traceSeries_Write(t *testing.T) {
 			if shardIDError != nil {
 				return
 			}
-			ev := pb.NewEntityValueBuilder().
+			ev := v1.NewEntityValueBuilder().
 				DataBinary(tt.args.entity.binary).
 				EntityID(tt.args.entity.id).
 				Fields(tt.args.entity.items...).
diff --git a/pkg/pb/database.go b/pkg/pb/v1/database.go
similarity index 99%
rename from pkg/pb/database.go
rename to pkg/pb/v1/database.go
index 614c42a..e03c90b 100644
--- a/pkg/pb/database.go
+++ b/pkg/pb/v1/database.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package pb
+package v1
 
 import (
 	"time"
diff --git a/pkg/pb/fields.go b/pkg/pb/v1/fields.go
similarity index 99%
rename from pkg/pb/fields.go
rename to pkg/pb/v1/fields.go
index c7190f1..e37b6b4 100644
--- a/pkg/pb/fields.go
+++ b/pkg/pb/v1/fields.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package pb
+package v1
 
 import (
 	databasev1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/database/v1"
diff --git a/pkg/pb/query.go b/pkg/pb/v1/query.go
similarity index 99%
rename from pkg/pb/query.go
rename to pkg/pb/v1/query.go
index 2442eb0..b829db8 100644
--- a/pkg/pb/query.go
+++ b/pkg/pb/v1/query.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package pb
+package v1
 
 import (
 	"time"
diff --git a/pkg/pb/write.go b/pkg/pb/v1/write.go
similarity index 99%
rename from pkg/pb/write.go
rename to pkg/pb/v1/write.go
index 4ef3bf2..c08f7e4 100644
--- a/pkg/pb/write.go
+++ b/pkg/pb/v1/write.go
@@ -15,7 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-package pb
+package v1
 
 import (
 	"time"
diff --git a/pkg/query/executor/interface.go b/pkg/query/v1/executor/interface.go
similarity index 100%
rename from pkg/query/executor/interface.go
rename to pkg/query/v1/executor/interface.go
diff --git a/pkg/query/logical/analyzer.go b/pkg/query/v1/logical/analyzer.go
similarity index 100%
rename from pkg/query/logical/analyzer.go
rename to pkg/query/v1/logical/analyzer.go
diff --git a/pkg/query/logical/analyzer_test.go b/pkg/query/v1/logical/analyzer_test.go
similarity index 84%
rename from pkg/query/logical/analyzer_test.go
rename to pkg/query/v1/logical/analyzer_test.go
index f20205f..8e36658 100644
--- a/pkg/query/logical/analyzer_test.go
+++ b/pkg/query/v1/logical/analyzer_test.go
@@ -29,14 +29,14 @@ import (
 	modelv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/model/v1"
 	apischema "github.com/apache/skywalking-banyandb/api/schema"
 	"github.com/apache/skywalking-banyandb/banyand/series"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
-	"github.com/apache/skywalking-banyandb/pkg/query/logical"
+	pb "github.com/apache/skywalking-banyandb/pkg/pb/v1"
+	logical2 "github.com/apache/skywalking-banyandb/pkg/query/v1/logical"
 )
 
 func TestAnalyzer_SimpleTimeScan(t *testing.T) {
 	assert := require.New(t)
 
-	ana := logical.DefaultAnalyzer()
+	ana := logical2.DefaultAnalyzer()
 
 	sT, eT := time.Now().Add(-3*time.Hour), time.Now()
 
@@ -58,9 +58,9 @@ func TestAnalyzer_SimpleTimeScan(t *testing.T) {
 	plan, err := ana.Analyze(context.TODO(), criteria, metadata, schema)
 	assert.NoError(err)
 	assert.NotNil(plan)
-	correctPlan, err := logical.Limit(
-		logical.Offset(
-			logical.TableScan(sT.UnixNano(), eT.UnixNano(), metadata, series.TraceStateDefault, false),
+	correctPlan, err := logical2.Limit(
+		logical2.Offset(
+			logical2.TableScan(sT.UnixNano(), eT.UnixNano(), metadata, series.TraceStateDefault, false),
 			0),
 		20).
 		Analyze(schema)
@@ -72,7 +72,7 @@ func TestAnalyzer_SimpleTimeScan(t *testing.T) {
 func TestAnalyzer_ComplexQuery(t *testing.T) {
 	assert := require.New(t)
 
-	ana := logical.DefaultAnalyzer()
+	ana := logical2.DefaultAnalyzer()
 
 	sT, eT := time.Now().Add(-3*time.Hour), time.Now()
 
@@ -98,12 +98,12 @@ func TestAnalyzer_ComplexQuery(t *testing.T) {
 	assert.NoError(err)
 	assert.NotNil(plan)
 
-	correctPlan, err := logical.Limit(
-		logical.Offset(
-			logical.OrderBy(logical.IndexScan(sT.UnixNano(), eT.UnixNano(), metadata,
-				[]logical.Expr{
-					logical.Eq(logical.NewFieldRef("service_instance_id"), logical.Str("my_app")),
-					logical.Eq(logical.NewFieldRef("http.method"), logical.Str("GET")),
+	correctPlan, err := logical2.Limit(
+		logical2.Offset(
+			logical2.OrderBy(logical2.IndexScan(sT.UnixNano(), eT.UnixNano(), metadata,
+				[]logical2.Expr{
+					logical2.Eq(logical2.NewFieldRef("service_instance_id"), logical2.Str("my_app")),
+					logical2.Eq(logical2.NewFieldRef("http.method"), logical2.Str("GET")),
 				},
 				series.TraceStateDefault, false),
 				"service_instance_id", modelv1.QueryOrder_SORT_DESC),
@@ -118,7 +118,7 @@ func TestAnalyzer_ComplexQuery(t *testing.T) {
 func TestAnalyzer_TraceIDQuery(t *testing.T) {
 	assert := require.New(t)
 
-	ana := logical.DefaultAnalyzer()
+	ana := logical2.DefaultAnalyzer()
 
 	criteria := pb.NewQueryRequestBuilder().
 		Limit(5).
@@ -139,7 +139,7 @@ func TestAnalyzer_TraceIDQuery(t *testing.T) {
 	assert.NoError(err)
 	assert.NotNil(plan)
 
-	correctPlan, err := logical.TraceIDFetch("123", metadata, false).Analyze(schema)
+	correctPlan, err := logical2.TraceIDFetch("123", metadata, false).Analyze(schema)
 	assert.NoError(err)
 	assert.NotNil(correctPlan)
 	cmp.Equal(plan, correctPlan)
@@ -148,7 +148,7 @@ func TestAnalyzer_TraceIDQuery(t *testing.T) {
 func TestAnalyzer_Fields_FieldNotDefined(t *testing.T) {
 	assert := require.New(t)
 
-	ana := logical.DefaultAnalyzer()
+	ana := logical2.DefaultAnalyzer()
 
 	criteria := pb.NewQueryRequestBuilder().
 		Limit(5).
@@ -169,13 +169,13 @@ func TestAnalyzer_Fields_FieldNotDefined(t *testing.T) {
 	assert.NoError(err)
 
 	_, err = ana.Analyze(context.TODO(), criteria, metadata, schema)
-	assert.ErrorIs(err, logical.ErrFieldNotDefined)
+	assert.ErrorIs(err, logical2.ErrFieldNotDefined)
 }
 
 func TestAnalyzer_OrderBy_FieldNotDefined(t *testing.T) {
 	assert := require.New(t)
 
-	ana := logical.DefaultAnalyzer()
+	ana := logical2.DefaultAnalyzer()
 
 	criteria := pb.NewQueryRequestBuilder().
 		Limit(5).
@@ -195,13 +195,13 @@ func TestAnalyzer_OrderBy_FieldNotDefined(t *testing.T) {
 	assert.NoError(err)
 
 	_, err = ana.Analyze(context.TODO(), criteria, metadata, schema)
-	assert.ErrorIs(err, logical.ErrFieldNotDefined)
+	assert.ErrorIs(err, logical2.ErrFieldNotDefined)
 }
 
 func TestAnalyzer_Projection_FieldNotDefined(t *testing.T) {
 	assert := require.New(t)
 
-	ana := logical.DefaultAnalyzer()
+	ana := logical2.DefaultAnalyzer()
 
 	criteria := pb.NewQueryRequestBuilder().
 		Limit(5).
@@ -221,13 +221,13 @@ func TestAnalyzer_Projection_FieldNotDefined(t *testing.T) {
 	assert.NoError(err)
 
 	_, err = ana.Analyze(context.TODO(), criteria, metadata, schema)
-	assert.ErrorIs(err, logical.ErrFieldNotDefined)
+	assert.ErrorIs(err, logical2.ErrFieldNotDefined)
 }
 
 func TestAnalyzer_Fields_IndexNotDefined(t *testing.T) {
 	assert := require.New(t)
 
-	ana := logical.DefaultAnalyzer()
+	ana := logical2.DefaultAnalyzer()
 
 	criteria := pb.NewQueryRequestBuilder().
 		Limit(5).
@@ -247,5 +247,5 @@ func TestAnalyzer_Fields_IndexNotDefined(t *testing.T) {
 	assert.NoError(err)
 
 	_, err = ana.Analyze(context.TODO(), criteria, metadata, schema)
-	assert.ErrorIs(err, logical.ErrIndexNotDefined)
+	assert.ErrorIs(err, logical2.ErrIndexNotDefined)
 }
diff --git a/pkg/query/logical/common_test.go b/pkg/query/v1/logical/common_test.go
similarity index 89%
rename from pkg/query/logical/common_test.go
rename to pkg/query/v1/logical/common_test.go
index f77bb54..0e5e059 100644
--- a/pkg/query/logical/common_test.go
+++ b/pkg/query/v1/logical/common_test.go
@@ -34,11 +34,13 @@ import (
 	apischema "github.com/apache/skywalking-banyandb/api/schema"
 	"github.com/apache/skywalking-banyandb/banyand/index"
 	"github.com/apache/skywalking-banyandb/banyand/series"
-	"github.com/apache/skywalking-banyandb/pkg/pb"
+	v1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
 	"github.com/apache/skywalking-banyandb/pkg/posting"
 	"github.com/apache/skywalking-banyandb/pkg/posting/roaring"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
-	"github.com/apache/skywalking-banyandb/pkg/query/logical"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
+	executor2 "github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/logical"
+	logical2 "github.com/apache/skywalking-banyandb/pkg/query/v1/logical"
 )
 
 type ChunkIDGenerator interface {
@@ -101,7 +103,7 @@ func GenerateEntities(g ChunkIDGenerator) []data.Entity {
 	entities := make([]data.Entity, 0)
 	rand.Seed(time.Now().UnixNano())
 	for g.HasNext() {
-		et := pb.NewQueryEntityBuilder().
+		et := v1.NewQueryEntityBuilder().
 			EntityID(strconv.FormatUint(uint64(g.Next()), 10)).
 			Timestamp(time.Now()).
 			Fields("trace_id", generateRndServiceName(rand.Int63()), "http.method", "GET").
@@ -121,10 +123,10 @@ type mockDataFactory struct {
 	ctrl          *gomock.Controller
 	num           int
 	traceMetadata *common.Metadata
-	s             logical.Schema
+	s             logical2.Schema
 }
 
-func newMockDataFactory(ctrl *gomock.Controller, traceMetadata *common.Metadata, s logical.Schema, num int) *mockDataFactory {
+func newMockDataFactory(ctrl *gomock.Controller, traceMetadata *common.Metadata, s logical2.Schema, num int) *mockDataFactory {
 	return &mockDataFactory{
 		ctrl:          ctrl,
 		num:           num,
@@ -133,7 +135,7 @@ func newMockDataFactory(ctrl *gomock.Controller, traceMetadata *common.Metadata,
 	}
 }
 
-func (f *mockDataFactory) MockParentPlan() logical.UnresolvedPlan {
+func (f *mockDataFactory) MockParentPlan() logical2.UnresolvedPlan {
 	p := logical.NewMockPlan(f.ctrl)
 	p.EXPECT().Execute(gomock.Any()).Return(GenerateEntities(GeneratorFromRange(0, common.ChunkID(f.num-1))), nil)
 	p.EXPECT().Schema().Return(f.s).AnyTimes()
@@ -142,7 +144,7 @@ func (f *mockDataFactory) MockParentPlan() logical.UnresolvedPlan {
 	return up
 }
 
-func (f *mockDataFactory) MockTraceIDFetch(traceID string) executor.ExecutionContext {
+func (f *mockDataFactory) MockTraceIDFetch(traceID string) executor2.ExecutionContext {
 	ec := executor.NewMockExecutionContext(f.ctrl)
 	ec.EXPECT().FetchTrace(*f.traceMetadata, traceID, series.ScanOptions{}).Return(data.Trace{
 		KindVersion: common.KindVersion{},
@@ -151,7 +153,7 @@ func (f *mockDataFactory) MockTraceIDFetch(traceID string) executor.ExecutionCon
 	return ec
 }
 
-func (f *mockDataFactory) MockIndexScan(startTime, endTime time.Time, indexMatches ...*indexMatcher) executor.ExecutionContext {
+func (f *mockDataFactory) MockIndexScan(startTime, endTime time.Time, indexMatches ...*indexMatcher) executor2.ExecutionContext {
 	ec := executor.NewMockExecutionContext(f.ctrl)
 	usedShards := make(map[uint]posting.List)
 
@@ -187,12 +189,12 @@ func (f *mockDataFactory) MockIndexScan(startTime, endTime time.Time, indexMatch
 	return ec
 }
 
-func prepareSchema(assert *require.Assertions) (*common.Metadata, logical.Schema) {
-	ana := logical.DefaultAnalyzer()
+func prepareSchema(assert *require.Assertions) (*common.Metadata, logical2.Schema) {
+	ana := logical2.DefaultAnalyzer()
 
 	sT, eT := time.Now().Add(-3*time.Hour), time.Now()
 
-	criteria := pb.NewQueryRequestBuilder().
+	criteria := v1.NewQueryRequestBuilder().
 		Limit(0).Offset(0).
 		Metadata("default", "trace").
 		TimeRange(sT, eT).
diff --git a/pkg/query/logical/expr.go b/pkg/query/v1/logical/expr.go
similarity index 100%
rename from pkg/query/logical/expr.go
rename to pkg/query/v1/logical/expr.go
diff --git a/pkg/query/logical/expr_literal.go b/pkg/query/v1/logical/expr_literal.go
similarity index 100%
rename from pkg/query/logical/expr_literal.go
rename to pkg/query/v1/logical/expr_literal.go
diff --git a/pkg/query/logical/format.go b/pkg/query/v1/logical/format.go
similarity index 100%
rename from pkg/query/logical/format.go
rename to pkg/query/v1/logical/format.go
diff --git a/pkg/query/logical/interface.go b/pkg/query/v1/logical/interface.go
similarity index 96%
rename from pkg/query/logical/interface.go
rename to pkg/query/v1/logical/interface.go
index ccc3300..afefae8 100644
--- a/pkg/query/logical/interface.go
+++ b/pkg/query/v1/logical/interface.go
@@ -21,7 +21,7 @@ import (
 	"fmt"
 
 	apiv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/database/v1"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
 )
 
 type PlanType uint8
diff --git a/pkg/query/logical/plan.go b/pkg/query/v1/logical/plan.go
similarity index 98%
rename from pkg/query/logical/plan.go
rename to pkg/query/v1/logical/plan.go
index da366bf..48b487a 100644
--- a/pkg/query/logical/plan.go
+++ b/pkg/query/v1/logical/plan.go
@@ -21,7 +21,7 @@ import (
 	"fmt"
 
 	"github.com/apache/skywalking-banyandb/api/data"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
 )
 
 var _ Plan = (*limit)(nil)
diff --git a/pkg/query/logical/plan_execution_test.go b/pkg/query/v1/logical/plan_execution_test.go
similarity index 76%
rename from pkg/query/logical/plan_execution_test.go
rename to pkg/query/v1/logical/plan_execution_test.go
index 761d7f9..f14d0f0 100644
--- a/pkg/query/logical/plan_execution_test.go
+++ b/pkg/query/v1/logical/plan_execution_test.go
@@ -27,8 +27,8 @@ import (
 	modelv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/model/v1"
 	"github.com/apache/skywalking-banyandb/banyand/series"
 	"github.com/apache/skywalking-banyandb/pkg/posting/roaring"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
-	"github.com/apache/skywalking-banyandb/pkg/query/logical"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
+	logical2 "github.com/apache/skywalking-banyandb/pkg/query/v1/logical"
 )
 
 func TestPlanExecution_Limit(t *testing.T) {
@@ -40,22 +40,22 @@ func TestPlanExecution_Limit(t *testing.T) {
 
 	tests := []struct {
 		name           string
-		unresolvedPlan logical.UnresolvedPlan
+		unresolvedPlan logical2.UnresolvedPlan
 		wantLength     int
 	}{
 		{
 			name:           "Limit 1",
-			unresolvedPlan: logical.Limit(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 1),
+			unresolvedPlan: logical2.Limit(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 1),
 			wantLength:     1,
 		},
 		{
 			name:           "Limit 10",
-			unresolvedPlan: logical.Limit(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 10),
+			unresolvedPlan: logical2.Limit(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 10),
 			wantLength:     10,
 		},
 		{
 			name:           "Limit 50",
-			unresolvedPlan: logical.Limit(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 50),
+			unresolvedPlan: logical2.Limit(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 50),
 			wantLength:     20,
 		},
 	}
@@ -84,22 +84,22 @@ func TestPlanExecution_Offset(t *testing.T) {
 
 	tests := []struct {
 		name           string
-		unresolvedPlan logical.UnresolvedPlan
+		unresolvedPlan logical2.UnresolvedPlan
 		wantLength     int
 	}{
 		{
 			name:           "Offset 0",
-			unresolvedPlan: logical.Offset(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 0),
+			unresolvedPlan: logical2.Offset(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 0),
 			wantLength:     20,
 		},
 		{
 			name:           "Offset 10",
-			unresolvedPlan: logical.Offset(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 10),
+			unresolvedPlan: logical2.Offset(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 10),
 			wantLength:     10,
 		},
 		{
 			name:           "Limit 50",
-			unresolvedPlan: logical.Offset(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 50),
+			unresolvedPlan: logical2.Offset(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), 50),
 			wantLength:     0,
 		},
 	}
@@ -128,7 +128,7 @@ func TestPlanExecution_TraceIDFetch(t *testing.T) {
 
 	traceID := "asdf1234"
 
-	p, err := logical.TraceIDFetch(traceID, m, false).Analyze(s)
+	p, err := logical2.TraceIDFetch(traceID, m, false).Analyze(s)
 	assert.NoError(err)
 	assert.NotNil(p)
 	f := newMockDataFactory(ctrl, m, s, 10)
@@ -148,23 +148,23 @@ func TestPlanExecution_IndexScan(t *testing.T) {
 
 	tests := []struct {
 		name           string
-		unresolvedPlan logical.UnresolvedPlan
+		unresolvedPlan logical2.UnresolvedPlan
 		wantLength     int
 		indexMatchers  []*indexMatcher
 	}{
 		{
 			name: "Single Index Search",
-			unresolvedPlan: logical.IndexScan(st.UnixNano(), et.UnixNano(), m, []logical.Expr{
-				logical.Eq(logical.NewFieldRef("http.method"), logical.Str("GET")),
+			unresolvedPlan: logical2.IndexScan(st.UnixNano(), et.UnixNano(), m, []logical2.Expr{
+				logical2.Eq(logical2.NewFieldRef("http.method"), logical2.Str("GET")),
 			}, series.TraceStateDefault, false),
 			indexMatchers: []*indexMatcher{newIndexMatcher("http.method", 0, roaring.NewPostingListWithInitialData(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))},
 			wantLength:    10,
 		},
 		{
 			name: "Multiple Index Search",
-			unresolvedPlan: logical.IndexScan(st.UnixNano(), et.UnixNano(), m, []logical.Expr{
-				logical.Eq(logical.NewFieldRef("http.method"), logical.Str("GET")),
-				logical.Eq(logical.NewFieldRef("service_id"), logical.Str("app")),
+			unresolvedPlan: logical2.IndexScan(st.UnixNano(), et.UnixNano(), m, []logical2.Expr{
+				logical2.Eq(logical2.NewFieldRef("http.method"), logical2.Str("GET")),
+				logical2.Eq(logical2.NewFieldRef("service_id"), logical2.Str("app")),
 			}, series.TraceStateDefault, false),
 			indexMatchers: []*indexMatcher{
 				newIndexMatcher("http.method", 0, roaring.NewPostingListWithInitialData(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)),
@@ -174,9 +174,9 @@ func TestPlanExecution_IndexScan(t *testing.T) {
 		},
 		{
 			name: "Multiple Index With One Empty Result(ChunkID)",
-			unresolvedPlan: logical.IndexScan(st.UnixNano(), et.UnixNano(), m, []logical.Expr{
-				logical.Eq(logical.NewFieldRef("http.method"), logical.Str("GET")),
-				logical.Eq(logical.NewFieldRef("service_id"), logical.Str("app")),
+			unresolvedPlan: logical2.IndexScan(st.UnixNano(), et.UnixNano(), m, []logical2.Expr{
+				logical2.Eq(logical2.NewFieldRef("http.method"), logical2.Str("GET")),
+				logical2.Eq(logical2.NewFieldRef("service_id"), logical2.Str("app")),
 			}, series.TraceStateDefault, false),
 			indexMatchers: []*indexMatcher{
 				newIndexMatcher("http.method", 0, roaring.NewPostingListWithInitialData(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)),
@@ -227,7 +227,7 @@ func TestPlanExecution_OrderBy(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			assert := require.New(t)
-			p, err := logical.OrderBy(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), tt.targetField, tt.sortDirection).Analyze(s)
+			p, err := logical2.OrderBy(newMockDataFactory(ctrl, m, s, 20).MockParentPlan(), tt.targetField, tt.sortDirection).Analyze(s)
 			assert.NoError(err)
 			assert.NotNil(p)
 
@@ -236,7 +236,7 @@ func TestPlanExecution_OrderBy(t *testing.T) {
 			assert.NoError(err)
 			assert.NotNil(entities)
 
-			assert.True(logical.Sorted(entities, tt.targetFieldIdx, tt.sortDirection))
+			assert.True(logical2.Sorted(entities, tt.targetFieldIdx, tt.sortDirection))
 		})
 	}
 }
diff --git a/pkg/query/logical/plan_indexscan.go b/pkg/query/v1/logical/plan_indexscan.go
similarity index 99%
rename from pkg/query/logical/plan_indexscan.go
rename to pkg/query/v1/logical/plan_indexscan.go
index 74d2f05..6b7e25d 100644
--- a/pkg/query/logical/plan_indexscan.go
+++ b/pkg/query/v1/logical/plan_indexscan.go
@@ -30,7 +30,7 @@ import (
 	"github.com/apache/skywalking-banyandb/banyand/index"
 	"github.com/apache/skywalking-banyandb/banyand/series"
 	"github.com/apache/skywalking-banyandb/pkg/posting"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
 )
 
 var _ UnresolvedPlan = (*unresolvedIndexScan)(nil)
diff --git a/pkg/query/logical/plan_orderby.go b/pkg/query/v1/logical/plan_orderby.go
similarity index 98%
rename from pkg/query/logical/plan_orderby.go
rename to pkg/query/v1/logical/plan_orderby.go
index 95b956f..8f0a3bc 100644
--- a/pkg/query/logical/plan_orderby.go
+++ b/pkg/query/v1/logical/plan_orderby.go
@@ -27,7 +27,7 @@ import (
 	"github.com/apache/skywalking-banyandb/api/data"
 	modelv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/model/v1"
 	"github.com/apache/skywalking-banyandb/pkg/convert"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
 )
 
 var _ Plan = (*orderBy)(nil)
diff --git a/pkg/query/logical/plan_tablescan.go b/pkg/query/v1/logical/plan_tablescan.go
similarity index 98%
rename from pkg/query/logical/plan_tablescan.go
rename to pkg/query/v1/logical/plan_tablescan.go
index 7f99d73..75b3b91 100644
--- a/pkg/query/logical/plan_tablescan.go
+++ b/pkg/query/v1/logical/plan_tablescan.go
@@ -26,7 +26,7 @@ import (
 	"github.com/apache/skywalking-banyandb/api/common"
 	"github.com/apache/skywalking-banyandb/api/data"
 	"github.com/apache/skywalking-banyandb/banyand/series"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
 )
 
 var _ Plan = (*tableScan)(nil)
diff --git a/pkg/query/logical/plan_traceid.go b/pkg/query/v1/logical/plan_traceid.go
similarity index 98%
rename from pkg/query/logical/plan_traceid.go
rename to pkg/query/v1/logical/plan_traceid.go
index a7ee476..3f37023 100644
--- a/pkg/query/logical/plan_traceid.go
+++ b/pkg/query/v1/logical/plan_traceid.go
@@ -26,7 +26,7 @@ import (
 	"github.com/apache/skywalking-banyandb/api/common"
 	"github.com/apache/skywalking-banyandb/api/data"
 	"github.com/apache/skywalking-banyandb/banyand/series"
-	"github.com/apache/skywalking-banyandb/pkg/query/executor"
+	"github.com/apache/skywalking-banyandb/pkg/query/v1/executor"
 )
 
 var _ UnresolvedPlan = (*unresolvedTraceIDFetch)(nil)
diff --git a/pkg/query/logical/schema.go b/pkg/query/v1/logical/schema.go
similarity index 100%
rename from pkg/query/logical/schema.go
rename to pkg/query/v1/logical/schema.go