Skip to content

Commit ef98543

Browse files
committed
fix function signatures
1 parent 9c2376b commit ef98543

File tree

5 files changed

+28
-49
lines changed

5 files changed

+28
-49
lines changed

chdb-purego/binding.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,13 @@ func findLibrary() string {
3535
}
3636

3737
var (
38-
queryStable func(argc int, argv **byte) *local_result
38+
queryStable func(argc int, argv []string) *local_result
3939
freeResult func(result *local_result)
40-
queryStableV2 func(argc int, argv **byte) *local_result_v2
40+
queryStableV2 func(argc int, argv []string) *local_result_v2
4141
freeResultV2 func(result *local_result_v2)
42-
connectChdb func(argc int, argv **byte) **chdb_conn
42+
connectChdb func(argc int, argv []string) **chdb_conn
4343
closeConn func(conn **chdb_conn)
44-
queryConn func(conn *chdb_conn, query *byte, format *byte) *local_result_v2
45-
queryConnV2 func(conn *chdb_conn, query string, format string) *local_result_v2
44+
queryConn func(conn *chdb_conn, query string, format string) *local_result_v2
4645
)
4746

4847
func init() {
@@ -54,9 +53,10 @@ func init() {
5453
purego.RegisterLibFunc(&queryStable, libchdb, "query_stable")
5554
purego.RegisterLibFunc(&freeResult, libchdb, "free_result")
5655
purego.RegisterLibFunc(&queryStableV2, libchdb, "query_stable_v2")
56+
5757
purego.RegisterLibFunc(&freeResultV2, libchdb, "free_result_v2")
5858
purego.RegisterLibFunc(&connectChdb, libchdb, "connect_chdb")
5959
purego.RegisterLibFunc(&closeConn, libchdb, "close_conn")
6060
purego.RegisterLibFunc(&queryConn, libchdb, "query_conn")
61-
purego.RegisterLibFunc(&queryConnV2, libchdb, "query_conn")
61+
6262
}

chdb-purego/chdb.go

Lines changed: 12 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package chdbpurego
33
import (
44
"errors"
55
"fmt"
6-
"runtime"
76
"unsafe"
87
)
98

@@ -15,6 +14,7 @@ func newChdbResult(cRes *local_result_v2) ChdbResult {
1514
res := &result{
1615
localResv2: cRes,
1716
}
17+
// runtime.SetFinalizer(res, res.Free)
1818
return res
1919

2020
}
@@ -90,15 +90,15 @@ func (c *result) String() string {
9090
}
9191

9292
type connection struct {
93-
conn **chdb_conn
94-
pinner runtime.Pinner
93+
conn **chdb_conn
9594
}
9695

9796
func NewChdbConn(conn **chdb_conn) ChdbConn {
98-
return &connection{
99-
conn: conn,
100-
pinner: runtime.Pinner{},
97+
c := &connection{
98+
conn: conn,
10199
}
100+
// runtime.SetFinalizer(c, c.Close)
101+
return c
102102
}
103103

104104
// Close implements ChdbConn.
@@ -114,14 +114,10 @@ func (c *connection) Query(queryStr string, formatStr string) (result ChdbResult
114114
if c.conn == nil {
115115
return nil, fmt.Errorf("invalid connection")
116116
}
117-
defer c.pinner.Unpin()
118-
// qPtr := stringToPtr(queryStr, &c.pinner)
119-
// fPtr := stringToPtr(formatStr, &c.pinner)
120-
deref := *c.conn
121-
// fmt.Printf("queryPtr: %p, formatPtr: %p, conn: %p\n", qPtr, fPtr, deref)
122-
// fmt.Printf("query string: %s\n", queryStr)
123-
// fmt.Printf("format string: %s\n", formatStr)
124-
res := queryConnV2(deref, queryStr, formatStr)
117+
118+
rawConn := *c.conn
119+
120+
res := queryConn(rawConn, queryStr, formatStr)
125121
if res == nil {
126122
// According to the C ABI of chDB v1.2.0, the C function query_stable_v2
127123
// returns nil if the query returns no data. This is not an error. We
@@ -147,18 +143,7 @@ func (c *connection) Ready() bool {
147143
}
148144

149145
func RawQuery(argc int, argv []string) (result ChdbResult, err error) {
150-
pinner := runtime.Pinner{}
151-
defer pinner.Unpin()
152-
153-
cArgv := make([]*byte, len(argv))
154-
for idx, arg := range argv {
155-
cArgv[idx] = (*byte)(unsafe.Pointer(&([]byte(arg + "\x00")[0])))
156-
157-
}
158-
cArgvPtr := (**byte)(unsafe.Pointer(&cArgv[0]))
159-
pinner.Pin(cArgvPtr)
160-
161-
res := queryStableV2(argc, cArgvPtr)
146+
res := queryStableV2(argc, argv)
162147
if res == nil {
163148
// According to the C ABI of chDB v1.2.0, the C function query_stable_v2
164149
// returns nil if the query returns no data. This is not an error. We
@@ -173,17 +158,7 @@ func RawQuery(argc int, argv []string) (result ChdbResult, err error) {
173158
}
174159

175160
func NewConnection(argc int, argv []string) (ChdbConn, error) {
176-
pinner := runtime.Pinner{}
177-
defer pinner.Unpin()
178-
179-
cArgv := make([]*byte, len(argv))
180-
for idx, arg := range argv {
181-
cArgv[idx] = (*byte)(unsafe.Pointer(&([]byte(arg + "\x00")[0])))
182-
183-
}
184-
cArgvPtr := (**byte)(unsafe.Pointer(&cArgv[0]))
185-
pinner.Pin(cArgvPtr)
186-
conn := connectChdb(argc, cArgvPtr)
161+
conn := connectChdb(argc, argv)
187162
if conn == nil {
188163
return nil, fmt.Errorf("could not create a chdb connection")
189164
}

chdb/driver/arrow.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ func (r *arrowRows) Close() error {
3636
// ignore reader close
3737
_ = r.reader.Close()
3838
r.reader = nil
39+
r.localResult.Free()
3940
r.localResult = nil
41+
4042
return nil
4143
}
4244

chdb/driver/driver.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ func NewConnect(opts map[string]string) (ret *connector, err error) {
214214
if ok {
215215
ret.udfPath = udfPath
216216
}
217-
// if ret.session == nil {
217+
if ret.session == nil {
218218

219-
// ret.session, err = chdb.NewSession()
220-
// if err != nil {
221-
// return nil, err
222-
// }
223-
// }
219+
ret.session, err = chdb.NewSession()
220+
if err != nil {
221+
return nil, err
222+
}
223+
}
224224
return
225225
}
226226

chdb/driver/parquet.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ func (r *parquetRows) Close() error {
5151
// ignore reader close
5252
_ = r.reader.Close()
5353
r.reader = nil
54+
r.localResult.Free()
5455
r.localResult = nil
56+
5557
r.buffer = nil
5658
return nil
5759
}

0 commit comments

Comments
 (0)