GithubHelp home page GithubHelp logo

db.Query with NULL *LOB fields hangs about go-hdb HOT 6 CLOSED

sap avatar sap commented on July 21, 2024
db.Query with NULL *LOB fields hangs

from go-hdb.

Comments (6)

stfnmllr avatar stfnmllr commented on July 21, 2024

Ok - as the error clearly states, that the table cannot be found in schema SYSTEM:

  • each db. takes a (most probably different) connection out of the connection pool
    --> db.Exec("SET SCHEMA....") is most probably executed not in the same connection as the following db.Query(...)
  • to guarantee the same connection, please use whether schema.tableName syntax in the query, a transaction or (golang > 1.9) a sql.Conn object

Please share the results after the change - thanks!

...Thanks for writing the go-hdb library!!
my pleasure

from go-hdb.

stfnmllr avatar stfnmllr commented on July 21, 2024

Didn't hear back, so closing the issue

from go-hdb.

petar-iv avatar petar-iv commented on July 21, 2024

I also observe that the process hangs when trying to fetch a LOB with a value of NULL (with current state of master branch, go version: 1.10.1, HANA 2 SPS 2). Here is a scenario to reproduce:

create schema test;

create table test.table_1 (col clob not null);
insert into test.table_1 values('some-text');

create table test.table_2 (col clob);
insert into test.table_2 values(null);
package main

import (
	"bytes"
	"database/sql"
	"fmt"

	"github.com/SAP/go-hdb/driver"
)

func main() {
	db, err := sql.Open("hdb", "hdb://<user>:<password>@<host>:<port>")
	if err != nil {
		panic(err)
	}
	defer db.Close()

	fetchLob(db, "non-null", "table_1")
	fetchLob(db, "null", "table_2")
}

func fetchLob(db *sql.DB, scenario string, tableName string) {
	fmt.Printf("Fetching %s LOB value ...\n", scenario)
	lob := new(driver.Lob)
	b := new(bytes.Buffer)
	lob.SetWriter(b)
	if err := db.QueryRow(fmt.Sprintf("select col from test.%s", tableName)).Scan(lob); err != nil {
		panic(err)
	}
	fmt.Printf("Fetched value: %v\n\n\n", b)
}

The output is:

Fetching non-null LOB value ...
Fetched value: some-text


Fetching null LOB value ...

There is no value from the second fetch because the process hangs.

Let me know if there is anything wrong in my coding or this is an issue in the library.

Many thanks

from go-hdb.

stfnmllr avatar stfnmllr commented on July 21, 2024

thanks a lot for providing the example - the code looks good, so most probably we are going to provide a fix asap

from go-hdb.

stfnmllr avatar stfnmllr commented on July 21, 2024

should work with the newest release (v0.11.1) - please see new NullLob for scanning Lob null values

from go-hdb.

petar-iv avatar petar-iv commented on July 21, 2024

Works as expected now, thanks a lot

from go-hdb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.