protocol

package
v0.100.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2020 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Overview

Package protocol implements the hdb command network protocol.

http://help.sap.com/hana/SAP_HANA_SQL_Command_Network_Protocol_Reference_en.pdf

Index

Constants

This section is empty.

Variables

View Source
var ErrFloatOutOfRange = errors.New("float out of range error")

ErrFloatOutOfRange means that a float exceeds the size of the hdb float field.

View Source
var ErrIntegerOutOfRange = errors.New("integer out of range error")

ErrIntegerOutOfRange means that an integer exceeds the size of the hdb integer field.

View Source
var ErrUint64OutOfRange = errors.New("uint64 values with high bit set are not supported")

ErrUint64OutOfRange means that a uint64 exceeds the size of a int64.

View Source
var QrsCache = newQueryResultSetCache()

QrsCache is a query result cache supporting reading procedure (call) table parameter via separate query (legacy mode).

Functions

func RegisterScanType added in v0.99.0

func RegisterScanType(dt DataType, scanType reflect.Type)

RegisterScanType registers driver owned datatype scantypes (e.g. Decimal, Lob).

Types

type ConvertError added in v0.99.0

type ConvertError struct {
	// contains filtered or unexported fields
}

A ConvertError is returned by conversion methods if a go datatype to hdb datatype conversion fails.

func (*ConvertError) Error added in v0.99.0

func (e *ConvertError) Error() string

func (*ConvertError) Unwrap added in v0.99.1

func (e *ConvertError) Unwrap() error

Unwrap returns the nested error.

type Converter added in v0.99.0

type Converter interface {
	Convert(interface{}) (interface{}, error)
}

Converter is the interface that wraps the Convert method. Convert is used to convert query parameters from go datatypes to hdb datatypes.

type DataType

type DataType byte

DataType is the type definition for data types supported by this package.

const (
	DtUnknown DataType = iota // unknown data type
	DtTinyint
	DtSmallint
	DtInteger
	DtBigint
	DtReal
	DtDouble
	DtDecimal
	DtTime
	DtString
	DtBytes
	DtLob
	DtRows
)

Data type constants.

func (DataType) ScanType added in v0.99.0

func (dt DataType) ScanType() reflect.Type

ScanType return the scan type (reflect.Type) of the corresponding data type.

func (DataType) String

func (i DataType) String() string

type Field added in v0.11.1

type Field interface {
	Name() string
	TypeName() string
	TypeLength() (int64, bool)
	TypePrecisionScale() (int64, int64, bool)
	ScanType() DataType
	Nullable() bool
	In() bool
	Out() bool
	Converter() Converter
}

A Field represents whether a db result or a parameter Field.

type PrepareResult added in v0.99.0

type PrepareResult struct {
	// contains filtered or unexported fields
}

A PrepareResult represents the result of a prepare statement.

func (*PrepareResult) Check added in v0.99.0

func (pr *PrepareResult) Check(qd *QueryDescr) error

Check checks consistency of the prepare result.

func (*PrepareResult) IsProcedureCall added in v0.99.0

func (pr *PrepareResult) IsProcedureCall() bool

IsProcedureCall returns true if the statement is a call statement.

func (*PrepareResult) NumField added in v0.99.0

func (pr *PrepareResult) NumField() int

NumField returns the number of parameter fields in a database statement.

func (*PrepareResult) NumInputField added in v0.99.0

func (pr *PrepareResult) NumInputField() int

NumInputField returns the number of input fields in a database statement.

func (*PrepareResult) PrmField added in v0.99.0

func (pr *PrepareResult) PrmField(idx int) Field

PrmField returns the parameter field at index idx.

func (*PrepareResult) StmtID added in v0.99.0

func (pr *PrepareResult) StmtID() uint64

StmtID returns the statement id.

type QueryDescr added in v0.99.0

type QueryDescr struct {
	// contains filtered or unexported fields
}

QueryDescr represents a query descriptor of a database statement.

func NewQueryDescr added in v0.99.0

func NewQueryDescr(query string, sc *scanner.Scanner) (*QueryDescr, error)

NewQueryDescr returns a new QueryDescr instance.

func (*QueryDescr) ID added in v0.99.0

func (d *QueryDescr) ID() uint64

ID return the query id of a query descriptor (legacy mode: call table output parameters).

func (*QueryDescr) IsBulk added in v0.99.0

func (d *QueryDescr) IsBulk() bool

IsBulk returns true if the query is a bulk statement..

func (*QueryDescr) Kind added in v0.99.0

func (d *QueryDescr) Kind() QueryKind

Kind return the query kind of a query descriptor.

func (*QueryDescr) Query added in v0.99.0

func (d *QueryDescr) Query() string

Query return the query statement of a query descriptor.

func (*QueryDescr) String added in v0.99.0

func (d *QueryDescr) String() string

type QueryKind added in v0.99.0

type QueryKind int

QueryKind is the query type of a database statement.

const (
	QkUnknown QueryKind = iota
	QkCall
	QkSelect
	QkInsert
	QkUpdate
	QkUpsert
	QkCreate
	QkDrop
	QkSet
	QkID
)

Query kind constants.

func (QueryKind) String added in v0.99.0

func (k QueryKind) String() string

type ReadProvider added in v0.99.0

type ReadProvider interface {
	Reader() io.Reader
}

ReadProvider is the interface wrapping the Reader which provides an io.Reader.

type Session

type Session struct {
	// contains filtered or unexported fields
}

Session represents a HDB session.

func NewSession

func NewSession(ctx context.Context, cfg SessionConfig) (*Session, error)

NewSession creates a new database session.

func (*Session) Close

func (s *Session) Close() error

Close closes the session.

func (*Session) CloseResultsetID

func (s *Session) CloseResultsetID(id uint64) error

CloseResultsetID releases the hdb resultset handle.

func (*Session) Commit

func (s *Session) Commit() error

Commit executes a database commit.

func (*Session) DropStatementID

func (s *Session) DropStatementID(id uint64) error

DropStatementID releases the hdb statement handle.

func (*Session) Exec

func (s *Session) Exec(pr *PrepareResult, args []driver.NamedValue) (driver.Result, error)

Exec executes a sql statement.

func (*Session) ExecCall added in v0.99.0

func (s *Session) ExecCall(pr *PrepareResult, args []driver.NamedValue) (driver.Result, error)

ExecCall executes a stored procecure (by Exec).

func (*Session) ExecDirect

func (s *Session) ExecDirect(query string) (driver.Result, error)

ExecDirect executes a sql statement without statement parameters.

func (*Session) InTx

func (s *Session) InTx() bool

InTx indicates, if the session is in transaction mode.

func (*Session) IsBad

func (s *Session) IsBad() bool

IsBad indicates, that the session is in bad state.

func (*Session) MaxBulkNum added in v0.99.0

func (s *Session) MaxBulkNum() int

MaxBulkNum returns the maximal number of bulk calls before auto flush.

func (*Session) Prepare

func (s *Session) Prepare(query string) (*PrepareResult, error)

Prepare prepares a sql statement.

func (*Session) Query

func (s *Session) Query(pr *PrepareResult, args []driver.NamedValue) (driver.Rows, error)

Query executes a query.

func (*Session) QueryCall added in v0.99.0

func (s *Session) QueryCall(pr *PrepareResult, args []driver.NamedValue) (driver.Rows, error)

QueryCall executes a stored procecure (by Query).

func (*Session) QueryDirect

func (s *Session) QueryDirect(query string) (driver.Rows, error)

QueryDirect executes a query without query parameters.

func (*Session) Reset added in v0.99.0

func (s *Session) Reset()

Reset resets the session.

func (*Session) Rollback

func (s *Session) Rollback() error

Rollback executes a database rollback.

func (*Session) SetInTx

func (s *Session) SetInTx(v bool)

SetInTx sets session in transaction mode.

type SessionConfig added in v0.99.0

type SessionConfig interface {
	Host() string
	Username() string
	Password() string
	Locale() string
	BufferSize() int
	FetchSize() int
	BulkSize() int
	LobChunkSize() int32
	Timeout() int
	Dfv() int
	TLSConfig() *tls.Config
	Legacy() bool
}

SessionConfig represents the session relevant driver connector options.

type Sniffer

type Sniffer struct {
	// contains filtered or unexported fields
}

A Sniffer is a simple proxy for logging hdb protocol requests and responses.

func NewSniffer

func NewSniffer(conn net.Conn, dbConn net.Conn) *Sniffer

NewSniffer creates a new sniffer instance. The conn parameter is the net.Conn connection, where the Sniffer is listening for hdb protocol calls. The dbAddr is the hdb host port address in "host:port" format.

func (*Sniffer) Do added in v0.99.0

func (s *Sniffer) Do() error

Do starts the protocol request and response logging.

type WriterSetter added in v0.99.0

type WriterSetter interface{ SetWriter(w io.Writer) error }

WriterSetter is the interface wrapping the SetWriter method (Lob handling).

Directories

Path Synopsis
Package encoding implements ...
Package encoding implements ...
Package scanner implements a HANA SQL query scanner.
Package scanner implements a HANA SQL query scanner.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL