Skip to content

Commit abb0348

Browse files
Richard BaahRichard Baah
authored andcommitted
Feat:GRPC-server. Generated grpc code for substrait server, with basic logic included
1 parent 5d8357f commit abb0348

9 files changed

Lines changed: 641 additions & 4 deletions

File tree

src/Backend/opti-sql-go/go.mod

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ module opti-sql-go
22

33
go 1.24.0
44

5-
require github.com/apache/arrow/go/v17 v17.0.0
5+
require (
6+
github.com/apache/arrow/go/v17 v17.0.0
7+
google.golang.org/grpc v1.63.2
8+
google.golang.org/protobuf v1.34.2
9+
)
610

711
require (
812
github.com/goccy/go-json v0.10.3 // indirect
@@ -11,8 +15,11 @@ require (
1115
github.com/zeebo/xxh3 v1.0.2 // indirect
1216
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect
1317
golang.org/x/mod v0.18.0 // indirect
18+
golang.org/x/net v0.26.0 // indirect
1419
golang.org/x/sync v0.7.0 // indirect
1520
golang.org/x/sys v0.21.0 // indirect
21+
golang.org/x/text v0.16.0 // indirect
1622
golang.org/x/tools v0.22.0 // indirect
1723
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
24+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
1825
)

src/Backend/opti-sql-go/go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,26 @@ golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUF
2626
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc=
2727
golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
2828
golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
29+
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
30+
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
2931
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
3032
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
3133
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3234
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
3335
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
36+
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
37+
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
3438
golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA=
3539
golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c=
3640
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
3741
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
3842
gonum.org/v1/gonum v0.15.0 h1:2lYxjRbTYyxkJxlhC+LvJIx3SsANPdRybu1tGj9/OrQ=
3943
gonum.org/v1/gonum v0.15.0/go.mod h1:xzZVBJBtS+Mz4q0Yl2LJTk+OxOg4jiXZ7qBoM0uISGo=
44+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY=
45+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY=
46+
google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
47+
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
48+
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
49+
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
4050
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
4151
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

src/Backend/opti-sql-go/main.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
package main
22

3+
import "opti-sql-go/substrait"
4+
35
func main() {
6+
substrait.Start()
47
}

src/Backend/opti-sql-go/operators/serialize_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import (
44
"bytes"
55
"fmt"
66
"io"
7+
"os"
78
"testing"
9+
"time"
810

911
"github.com/apache/arrow/go/v17/arrow"
1012
"github.com/apache/arrow/go/v17/arrow/array"
@@ -756,3 +758,44 @@ func TestNullSchemaSerialize(t *testing.T) {
756758
t.Fatalf("Schema serialization failed: %v", err)
757759
}
758760
}
761+
762+
func TestSeralizeToDisk(t *testing.T) {
763+
r1 := generateDummyRecordBatch1()
764+
serializer, err := NewSerializer(r1.Schema)
765+
if err != nil {
766+
t.Fatalf("Failed to create serializer: %v", err)
767+
}
768+
randStr := time.Now().Unix()
769+
tmpFile, err := os.Create("serialized_data_" + fmt.Sprintf("%d", randStr) + ".bin")
770+
if err != nil {
771+
t.Fatalf("Failed to create temp file: %v", err)
772+
}
773+
defer os.Remove(tmpFile.Name())
774+
defer tmpFile.Close()
775+
schemaContent, _ := serializer.SerializeSchema(r1.Schema)
776+
columnContent, _ := serializer.SerializeBatchColumns(r1)
777+
schemaContent = append(schemaContent, columnContent...)
778+
_, err = tmpFile.Write(schemaContent)
779+
if err != nil {
780+
t.Fatalf("Failed to write serialized data to disk: %v", err)
781+
}
782+
// now decode from disk
783+
_, err = tmpFile.Seek(0, io.SeekStart)
784+
if err != nil {
785+
t.Fatalf("Failed to seek to start of file: %v", err)
786+
}
787+
deserSchema, err := serializer.DeserializeSchema(tmpFile)
788+
if err != nil {
789+
t.Fatalf("Failed to deserialize schema from disk: %v", err)
790+
}
791+
if !deserSchema.Equal(r1.Schema) {
792+
t.Fatalf("Deserialized schema does not match original schema")
793+
}
794+
deserColumns, err := serializer.DecodeRecordBatch(tmpFile, deserSchema)
795+
if err != nil {
796+
t.Fatalf("Failed to deserialize columns from disk: %v", err)
797+
}
798+
if len(deserColumns) != len(r1.Columns) {
799+
t.Fatalf("Column count mismatch after deserialization from disk")
800+
}
801+
}

0 commit comments

Comments
 (0)