Skip to content

Commit

Permalink
Logs at API Level (#241)
Browse files Browse the repository at this point in the history
* Update go.yml
* Added trace logs at API level
---------
Co-authored-by: Vikas Mathur <[email protected]>
  • Loading branch information
vmathur12 authored Jun 28, 2024
1 parent 3cfc568 commit 30028d8
Show file tree
Hide file tree
Showing 33 changed files with 921 additions and 273 deletions.
64 changes: 64 additions & 0 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go

name: Go

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:

build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.19.3'

- name: Install clidriver
run: |
pwd
go run installer/setup.go
pwd
ibm_db_home=/home/runner/work/clidriver
cgo_cflags=-I$ibm_db_home/include
cgo_ldflags=-L$ibm_db_home/lib
ld_library_path=$ibm_db_home/lib
echo "IBM_DB_HOME=$ibm_db_home" >> "$GITHUB_ENV"
echo "CGO_CFLAGS=$cgo_cflags" >> "$GITHUB_ENV"
echo "CGO_LDFLAGS=$cgo_ldflags" >> "$GITHUB_ENV"
echo "LD_LIBRARY_PATH=$ld_library_path" >> "$GITHUB_ENV"
db2_user=
db2_passwd=
db2_database=
db2_hostname=
db2_port=
echo "DB2_USER=$db2_user" >> "$GITHUB_ENV"
echo "DB2_PASSWD=$db2_passwd" >> "$GITHUB_ENV"
echo "DB2_DATABASE=$db2_database" >> "$GITHUB_ENV"
echo "DB2_HOSTNAME=$db2_hostname" >> "$GITHUB_ENV"
echo "DB2_PORT=$db2_port" >> "$GITHUB_ENV"
- name: Test
run: |
pwd
cd testdata
go mod init t2
go mod tidy
echo "============TEST CASES ======"
#echo "CGO_LDFLAGS = " $CGO_LDFLAGS
#echo "DB2_USER = " $DB2_USER
go test -v
#go test createdroptable_test.go main.go
#go test alldatatypes_test.go main.go
#go test chinesechar_test.go main.go
#go test hugequery_test.go main.go
#go test decimal_test.go main.go
20 changes: 18 additions & 2 deletions api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"unicode/utf16"
"unsafe"
"runtime"
trc "github.com/ibmdb/go_ibm_db/log2"
"fmt"
)

type (
Expand Down Expand Up @@ -57,44 +59,58 @@ type (
// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,
// with a terminating NUL removed.
func UTF16ToString(s []uint16) string {
trc.Trace1("api/api.go UTF16ToString() - ENTRY")
for i, v := range s {
if v == 0 {
s = s[0:i]
break
}
}
trc.Trace1("api/api.go UTF16ToString() - EXIT")
return string(utf16.Decode(s))
}

// StringToUTF16 returns the UTF-16 encoding of the UTF-8 string s,
// with a terminating NUL added.
func StringToUTF16(s string) []uint16 {
//func StringToUTF16(s string) []uint16 { return utf16.Encode([]rune(s + "\u0000")) }
func StringToUTF16(s string) []uint16 {
trc.Trace1("api/api.go StringToUTF16()")
trc.Trace1(fmt.Sprintf("api/api.go StringToUTF16() - s = %s", s))

if runtime.GOOS == "zos"{
return utf16.Encode([]rune(s))
}else {

return utf16.Encode([]rune(s + "\u0000"))
}
}


// StringToUTF16Ptr returns pointer to the UTF-16 encoding of
// the UTF-8 string s, with a terminating NUL added.
func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] }

// ExtractUTF16Str uses unsafe package to copy UTF16 string to a byte slice.
func ExtractUTF16Str(s []uint16) []byte {
trc.Trace1("api/api.go ExtractUTF16Str() - ENTRY")

var out []byte
for i := range s {
b := Extract(unsafe.Pointer(&s[i]), unsafe.Sizeof(s[i]))
out = append(out, b...)
}

trc.Trace1("api/api.go ExtractUTF16Str() - EXIT")
return out
}

func Extract(ptr unsafe.Pointer, size uintptr) []byte {
trc.Trace1("api/api.go Extract() - ENTRY")

out := make([]byte, size)
for i := range out {
out[i] = *((*byte)(unsafe.Pointer(uintptr(ptr) + uintptr(i))))
}

trc.Trace1("api/api.go Extract() - EXIT")
return out
}
17 changes: 17 additions & 0 deletions api/api_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@

package api

import (
trc "github.com/ibmdb/go_ibm_db/log2"
"fmt"
)

// #cgo aix LDFLAGS: -ldb2
// #cgo darwin LDFLAGS: -ldb2
// #cgo linux LDFLAGS: -ldb2
Expand Down Expand Up @@ -172,11 +177,23 @@ type (
)

func SQLSetEnvUIntPtrAttr(environmentHandle SQLHENV, attribute SQLINTEGER, valuePtr uintptr, stringLength SQLINTEGER) (ret SQLRETURN) {
trc.Trace1("api/api_unix.go SQLSetEnvUIntPtrAttr() - ENTRY)
trc.Trace1(fmt.Sprintf("attribute=%d, valuePtr=0x%x, stringLength=%d", attribute, valuePtr, stringLength))

r := C.sqlSetEnvUIntPtrAttr(C.SQLHENV(environmentHandle), C.SQLINTEGER(attribute), C.uintptr_t(valuePtr), C.SQLINTEGER(stringLength))

trc.Trace1(fmt.Sprintf("r = %d", r))
trc.Trace1("api/api_unix.go SQLSetEnvUIntPtrAttr() - EXIT)
return SQLRETURN(r)
}

func SQLSetConnectUIntPtrAttr(connectionHandle SQLHDBC, attribute SQLINTEGER, valuePtr uintptr, stringLength SQLINTEGER) (ret SQLRETURN) {
trc.Trace1("api/api_unix.go SQLSetConnectUIntPtrAttr() - ENTRY)
trc.Trace1(fmt.Sprintf("attribute=%d, valuePtr=%x, stringLength=%d", attribute, valuePtr, stringLength))

r := C.sqlSetConnectUIntPtrAttr(C.SQLHDBC(connectionHandle), C.SQLINTEGER(attribute), C.uintptr_t(valuePtr), C.SQLINTEGER(stringLength))

trc.Trace1(fmt.Sprintf("r = %d", r))
trc.Trace1("api/api_unix.go SQLSetConnectUIntPtrAttr() - EXIT)
return SQLRETURN(r)
}
14 changes: 14 additions & 0 deletions api/api_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ package api

import (
"syscall"
trc "github.com/ibmdb/go_ibm_db/log2"
"fmt"
)

const (
Expand Down Expand Up @@ -161,13 +163,25 @@ type (
)

func SQLSetEnvUIntPtrAttr(environmentHandle SQLHENV, attribute SQLINTEGER, valuePtr uintptr, stringLength SQLINTEGER) (ret SQLRETURN) {
trc.Trace1("api/api_windows.go SQLSetEnvUIntPtrAttr() - ENTRY")
trc.Trace1(fmt.Sprintf("attribute=%d, valuePtr=0x%x, stringLength=%d", attribute, valuePtr, stringLength))

r0, _, _ := syscall.Syscall6(procSQLSetEnvAttr.Addr(), 4, uintptr(environmentHandle), uintptr(attribute), uintptr(valuePtr), uintptr(stringLength), 0, 0)
ret = SQLRETURN(r0)

trc.Trace1(fmt.Sprintf("ret = %d", ret))
trc.Trace1("api/api_windows.go SQLSetEnvUIntPtrAttr() - EXIT")
return
}

func SQLSetConnectUIntPtrAttr(connectionHandle SQLHDBC, attribute SQLINTEGER, valuePtr uintptr, stringLength SQLINTEGER) (ret SQLRETURN) {
trc.Trace1("api/api_windows.go SQLSetConnectUIntPtrAttr() - ENTRY")
trc.Trace1(fmt.Sprintf("attribute=%d, valuePtr=%x, stringLength=%d", attribute, valuePtr, stringLength))

r0, _, _ := syscall.Syscall6(procSQLSetConnectAttrW.Addr(), 4, uintptr(connectionHandle), uintptr(attribute), uintptr(valuePtr), uintptr(stringLength), 0, 0)
ret = SQLRETURN(r0)

trc.Trace1(fmt.Sprintf("ret = %d", ret))
trc.Trace1("api/api_windows.go SQLSetConnectUIntPtrAttr() - EXIT")
return
}
14 changes: 13 additions & 1 deletion api/api_zos.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import (
"unsafe"

"github.com/ibmruntimes/go-recordio/v2/utils"
trc "github.com/ibmdb/go_ibm_db/log2"
"fmt"
)

func getFunc(dll *utils.Dll, str string) uintptr {
Expand Down Expand Up @@ -164,11 +166,21 @@ type (
)

func SQLSetEnvUIntPtrAttr(environmentHandle SQLHENV, attribute SQLINTEGER, valuePtr uintptr, stringLength SQLINTEGER) (ret SQLRETURN) {
trc.Trace1("api/api_zos.go SQLSetEnvUIntPtrAttr() - ENTRY")

r := utils.CfuncEbcdic(getFunc(&dll, "SQLSetEnvAttr"), uintptr(environmentHandle), uintptr(attribute), uintptr(valuePtr), uintptr(stringLength))

trc.Trace1(fmt.Sprintf("r = %d", r))
trc.Trace1("api/api_zos.go SQLSetEnvUIntPtrAttr() - EXIT")
return SQLRETURN(r)
}

func SQLSetConnectUIntPtrAttr(connectionHandle SQLHDBC, attribute SQLINTEGER, valuePtr uintptr, stringLength SQLINTEGER) (ret SQLRETURN) {
trc.Trace1("api/api_zos.go SQLSetConnectUIntPtrAttr() - ENTRY")

r := utils.CfuncEbcdic(getFunc(&dll, "SQLSetConnectAttr"), uintptr(connectionHandle), uintptr(attribute), uintptr(valuePtr), uintptr(stringLength))

trc.Trace1(fmt.Sprintf("r = %d", r))
trc.Trace1("api/api_zos.go SQLSetConnectUIntPtrAttr() - EXIT")
return SQLRETURN(r)
}
}
Loading

0 comments on commit 30028d8

Please sign in to comment.