Skip to content

Commit

Permalink
moved some utility functions to samehada_util package.
Browse files Browse the repository at this point in the history
  • Loading branch information
ryogrid committed Aug 24, 2024
1 parent 4595496 commit e8d0759
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 63 deletions.
55 changes: 2 additions & 53 deletions lib/samehada/samehada.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package samehada

import (
"errors"
"fmt"
"github.com/ryogrid/SamehadaDB/lib/catalog"
"github.com/ryogrid/SamehadaDB/lib/common"
"github.com/ryogrid/SamehadaDB/lib/concurrency"
Expand All @@ -18,7 +17,6 @@ import (
"github.com/ryogrid/SamehadaDB/lib/storage/disk"
"github.com/ryogrid/SamehadaDB/lib/storage/index/index_constants"
"github.com/ryogrid/SamehadaDB/lib/storage/page"
"github.com/ryogrid/SamehadaDB/lib/storage/table/schema"
"github.com/ryogrid/SamehadaDB/lib/storage/tuple"
"github.com/ryogrid/SamehadaDB/lib/types"
"math"
Expand Down Expand Up @@ -192,7 +190,7 @@ func (sdb *SamehadaDB) ExecuteSQLForTxnTh(ch *chan *reqResult, qr *queryRequest)
*ch <- &reqResult{err, nil, qr.reqId, qr.queryStr, qr.callerCh}
return
}
*ch <- &reqResult{nil, ConvValueListToIFs(results), qr.reqId, qr.queryStr, qr.callerCh}
*ch <- &reqResult{nil, samehada_util.ConvValueListToIFs(results), qr.reqId, qr.queryStr, qr.callerCh}
}

func (sdb *SamehadaDB) ExecuteSQL(sqlStr string) (error, [][]interface{}) {
Expand Down Expand Up @@ -249,7 +247,7 @@ func (sdb *SamehadaDB) ExecuteSQLRetValues(sqlStr string) (error, [][]*types.Val
}

//fmt.Println(result, outSchema)
retVals := ConvTupleListToValues(outSchema, result)
retVals := samehada_util.ConvTupleListToValues(outSchema, result)

return nil, retVals
}
Expand Down Expand Up @@ -277,52 +275,3 @@ func (sdb *SamehadaDB) ForceCheckpointingForTestcase() {
sdb.shi_.GetCheckpointManager().BeginCheckpoint()
sdb.shi_.GetCheckpointManager().EndCheckpoint()
}

func ConvTupleListToValues(schema_ *schema.Schema, result []*tuple.Tuple) [][]*types.Value {
retVals := make([][]*types.Value, 0)
for _, tuple_ := range result {
rowVals := make([]*types.Value, 0)
colNum := int(schema_.GetColumnCount())
for idx := 0; idx < colNum; idx++ {
val := tuple_.GetValue(schema_, uint32(idx))
rowVals = append(rowVals, &val)
}
retVals = append(retVals, rowVals)
}
return retVals
}

func ConvValueListToIFs(vals [][]*types.Value) [][]interface{} {
retVals := make([][]interface{}, 0)
for _, valsRow := range vals {
ifsList := make([]interface{}, 0)
for _, val := range valsRow {
if val.IsNull() {
ifsList = append(ifsList, nil)
} else {
switch val.ValueType() {
case types.Integer:
ifsList = append(ifsList, val.ToInteger())
case types.Float:
ifsList = append(ifsList, val.ToFloat())
case types.Varchar:
ifsList = append(ifsList, val.ToString())
default:
panic("not supported Value object")
}
}
}
retVals = append(retVals, ifsList)
}
return retVals
}

func PrintExecuteResults(results [][]*types.Value) {
fmt.Println("----")
for _, valList := range results {
for _, val := range valList {
fmt.Printf("%s ", val.ToString())
}
fmt.Println("")
}
}
21 changes: 11 additions & 10 deletions lib/samehada/samehada_test/samehada_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"github.com/ryogrid/SamehadaDB/lib/common"
"github.com/ryogrid/SamehadaDB/lib/samehada"
"github.com/ryogrid/SamehadaDB/lib/samehada/samehada_util"
testingpkg "github.com/ryogrid/SamehadaDB/lib/testing/testing_assert"
"math/rand"
"os"
Expand Down Expand Up @@ -32,15 +33,15 @@ func TestInsertAndMultiItemPredicateSelect(t *testing.T) {
db.ExecuteSQLRetValues("INSERT INTO name_age_list(name, age) VALUES ('加藤', 18);")
db.ExecuteSQLRetValues("INSERT INTO name_age_list(name, age) VALUES ('木村', 18);")
_, results1 := db.ExecuteSQLRetValues("SELECT * FROM name_age_list WHERE age >= 20;")
samehada.PrintExecuteResults(results1)
samehada_util.PrintExecuteResults(results1)
_, results2 := db.ExecuteSQLRetValues("SELECT age FROM name_age_list WHERE age >= 20;")
samehada.PrintExecuteResults(results2)
samehada_util.PrintExecuteResults(results2)
_, results3 := db.ExecuteSQLRetValues("SELECT name, age FROM name_age_list WHERE age >= 20;")
samehada.PrintExecuteResults(results3)
samehada_util.PrintExecuteResults(results3)
_, results4 := db.ExecuteSQLRetValues("SELECT name, age FROM name_age_list WHERE age <= 23 AND age >= 20;")
samehada.PrintExecuteResults(results4)
samehada_util.PrintExecuteResults(results4)
_, results5 := db.ExecuteSQLRetValues("SELECT * FROM name_age_list WHERE (age = 18 OR age >= 22) AND age < 25;")
samehada.PrintExecuteResults(results5)
samehada_util.PrintExecuteResults(results5)

common.TempSuppressOnMemStorage = false
db.Shutdown()
Expand Down Expand Up @@ -69,13 +70,13 @@ func TestHasJoinSelect(t *testing.T) {
db.ExecuteSQLRetValues("INSERT INTO id_buppin_list(id, buppin) VALUES (4, 'Scanner');")
db.ExecuteSQLRetValues("INSERT INTO id_buppin_list(id, buppin) VALUES (4, 'Network Switch');")
_, results1 := db.ExecuteSQLRetValues("SELECT * FROM id_name_list JOIN id_buppin_list ON id_name_list.id = id_buppin_list.id;")
samehada.PrintExecuteResults(results1)
samehada_util.PrintExecuteResults(results1)
_, results2 := db.ExecuteSQLRetValues("SELECT id_buppin_list.id, id_buppin_list.buppin FROM id_name_list JOIN id_buppin_list ON id_name_list.id = id_buppin_list.id;")
samehada.PrintExecuteResults(results2)
samehada_util.PrintExecuteResults(results2)
_, results3 := db.ExecuteSQLRetValues("SELECT * FROM id_name_list JOIN id_buppin_list ON id_name_list.id = id_buppin_list.id WHERE id_name_list.id > 1;")
samehada.PrintExecuteResults(results3)
samehada_util.PrintExecuteResults(results3)
_, results4 := db.ExecuteSQLRetValues("SELECT id_name_list.id, id_buppin_list.buppin FROM id_name_list JOIN id_buppin_list ON id_name_list.id = id_buppin_list.id WHERE id_name_list.id > 1 AND id_buppin_list.id < 4;")
samehada.PrintExecuteResults(results4)
samehada_util.PrintExecuteResults(results4)

db.Shutdown()
}
Expand Down Expand Up @@ -125,7 +126,7 @@ func TestSimpleUpdate(t *testing.T) {

db.ExecuteSQLRetValues("UPDATE name_age_list SET name = '鮫肌' WHERE age <= 20;")
_, results1 := db.ExecuteSQLRetValues("SELECT * FROM name_age_list WHERE name = '鮫肌';")
samehada.PrintExecuteResults(results1)
samehada_util.PrintExecuteResults(results1)
testingpkg.SimpleAssert(t, len(results1) == 3)

common.TempSuppressOnMemStorage = false
Expand Down
52 changes: 52 additions & 0 deletions lib/samehada/samehada_util/samehada_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import (
"bytes"
"encoding/binary"
"encoding/json"
"fmt"
"github.com/deckarep/golang-set/v2"
"github.com/ryogrid/SamehadaDB/lib/common"
"github.com/ryogrid/SamehadaDB/lib/storage/page"
"github.com/ryogrid/SamehadaDB/lib/storage/table/schema"
"github.com/ryogrid/SamehadaDB/lib/storage/tuple"
"github.com/ryogrid/SamehadaDB/lib/types"
"math"
"math/rand"
Expand Down Expand Up @@ -440,3 +443,52 @@ func DeepCopy(dst interface{}, src interface{}) (err error) {
}
return nil
}

func ConvTupleListToValues(schema_ *schema.Schema, result []*tuple.Tuple) [][]*types.Value {
retVals := make([][]*types.Value, 0)
for _, tuple_ := range result {
rowVals := make([]*types.Value, 0)
colNum := int(schema_.GetColumnCount())
for idx := 0; idx < colNum; idx++ {
val := tuple_.GetValue(schema_, uint32(idx))
rowVals = append(rowVals, &val)
}
retVals = append(retVals, rowVals)
}
return retVals
}

func ConvValueListToIFs(vals [][]*types.Value) [][]interface{} {
retVals := make([][]interface{}, 0)
for _, valsRow := range vals {
ifsList := make([]interface{}, 0)
for _, val := range valsRow {
if val.IsNull() {
ifsList = append(ifsList, nil)
} else {
switch val.ValueType() {
case types.Integer:
ifsList = append(ifsList, val.ToInteger())
case types.Float:
ifsList = append(ifsList, val.ToFloat())
case types.Varchar:
ifsList = append(ifsList, val.ToString())
default:
panic("not supported Value object")
}
}
}
retVals = append(retVals, ifsList)
}
return retVals
}

func PrintExecuteResults(results [][]*types.Value) {
fmt.Println("----")
for _, valList := range results {
for _, val := range valList {
fmt.Printf("%s ", val.ToString())
}
fmt.Println("")
}
}

0 comments on commit e8d0759

Please sign in to comment.