Documentation ¶
Overview ¶
Package cloudwave provides a cloudwave driver for Go's database/sql package.
The driver should be used via the database/sql package:
import "database/sql" import _ "github.com/CloudwaveDatabase/database_sql_cloudwave" db, err := sql.Open("cloudwave", "user:password@/dbname")
See https://github.com/CloudwaveDatabase/database_sql_cloudwave#usage for details
Index ¶
- Constants
- Variables
- func DeregisterLocalFile(filePath string)
- func DeregisterReaderHandler(name string)
- func DeregisterServerPubKey(name string)
- func DeregisterTLSConfig(key string)
- func NewConnector(cfg *Config) (driver.Connector, error)
- func PullData(i int) []byte
- func ReadLengthEncodedString(b []byte) ([]byte, bool, int, error)
- func RegisterDial(network string, dial DialFunc)deprecated
- func RegisterDialContext(net string, dial DialContextFunc)
- func RegisterLocalFile(filePath string)
- func RegisterReaderHandler(name string, handler func() io.Reader)
- func RegisterServerPubKey(name string, pubKey *rsa.PublicKey)
- func RegisterTLSConfig(key string, config *tls.Config) error
- func SetLogger(logger Logger) error
- func Ucs2ToUtf8(ucs2 []byte, count int) ([]byte, int, error)
- func Utf8ToUcs2(utf8 []byte, utf8len int) ([]byte, int, int, error)
- type CloudBlob
- type CloudClob
- type CloudWaveDriver
- type CloudWaveError
- type Config
- type DialContextFunc
- type DialFuncdeprecated
- type Expand
- func (e *Expand) Chat(hisstring []string, inputText string) (string, error)
- func (e *Expand) ChatResult() (string, error)
- func (e Expand) CloseStatement(int32) error
- func (e Expand) CreateStatement() (int32, error)
- func (e *Expand) NextStreamingChat() (string, error)
- func (e Expand) Open(dsn string) (driver.Conn, error)
- func (e *Expand) QueryKnowledge(hisstring []string, inputText string) (string, error)
- func (e *Expand) StreamingChat(hisstring []string, inputText string) (string, error)
- func (e *Expand) StreamingChatBegin(dns string) error
- func (e *Expand) StreamingChatEnd()
- func (e *Expand) StreamingChatType(chattype string)
- func (e *Expand) UseSchema(schemaname string) error
- type Logger
- type NullTimedeprecated
Constants ¶
const ( INT_MIN_VALUE = 0x80000000 INT_MAX_VALUE = 0x7fffffff LONG_MIN_VALUE = 0x8000000000000000 LONG_MAX_VALUE = 0x7fffffffffffffff INT_CHUNK_SIZE = 8192 )
const ( BIT = -7 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code TINYINT}. */ TINYINT = -6 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code SMALLINT}. */ SMALLINT = 5 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code INTEGER}. */ INTEGER = 4 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code BIGINT}. */ BIGINT = -5 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code FLOAT}. */ FLOAT = 6 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code REAL}. */ REAL = 7 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code DOUBLE}. */ DOUBLE = 8 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code NUMERIC}. */ NUMERIC = 2 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code DECIMAL}. */ DECIMAL = 3 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code CHAR}. */ CHAR = 1 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code VARCHAR}. */ VARCHAR = 12 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code LONGVARCHAR}. */ LONGVARCHAR = -1 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code DATE}. */ DATE = 91 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code TIME}. */ TIME = 92 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code TIMESTAMP}. */ TIMESTAMP = 93 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code BINARY}. */ BINARY = -2 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code VARBINARY}. */ VARBINARY = -3 /** * <P>The constant in the Java programming language, sometimes referred * to as a type code, that identifies the generic SQL type * {@code LONGVARBINARY}. */ LONGVARBINARY = -4 /** * <P>The constant in the Java programming language * that identifies the generic SQL value * {@code NULL}. */ NULL = 0 /** * The constant in the Java programming language that indicates * that the SQL type is database-specific and * gets mapped to a Java object that can be accessed via * the methods {@code getObject} and {@code setObject}. */ OTHER = 1111 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code JAVA_OBJECT}. * @since 1.2 */ JAVA_OBJECT = 2000 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code DISTINCT}. * @since 1.2 */ DISTINCT = 2001 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code STRUCT}. * @since 1.2 */ STRUCT = 2002 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code ARRAY}. * @since 1.2 */ ARRAY = 2003 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code BLOB}. * @since 1.2 */ BLOB = 2004 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code CLOB}. * @since 1.2 */ CLOB = 2005 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code REF}. * @since 1.2 */ REF = 2006 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code DATALINK}. * * @since 1.4 */ DATALINK = 70 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code BOOLEAN}. * * @since 1.4 */ BOOLEAN = 16 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code ROWID} * * @since 1.6 * */ ROWID = -8 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code NCHAR} * * @since 1.6 */ NCHAR = -15 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code NVARCHAR}. * * @since 1.6 */ NVARCHAR = -9 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code LONGNVARCHAR}. * * @since 1.6 */ LONGNVARCHAR = -16 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code NCLOB}. * * @since 1.6 */ NCLOB = 2011 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code XML}. * * @since 1.6 */ SQLXML = 2009 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type {@code REF CURSOR}. * * @since 1.8 */ REF_CURSOR = 2012 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code TIME WITH TIMEZONE}. * * @since 1.8 */ TIME_WITH_TIMEZONE = 2013 /** * The constant in the Java programming language, sometimes referred to * as a type code, that identifies the generic SQL type * {@code TIMESTAMP WITH TIMEZONE}. * * @since 1.8 */ TIMESTAMP_WITH_TIMEZONE = 2014 )
const ( //ODBC CLOUD_TYPE_INTEGER = 0 CLOUD_TYPE_CHAR = 1 CLOUD_TYPE_VARCHAR = 2 CLOUD_TYPE_FLOAT = 3 CLOUD_TYPE_DOUBLE = 4 CLOUD_TYPE_DATE = 5 CLOUD_TYPE_TIME = 6 CLOUD_TYPE_TIMESTAMP = 7 CLOUD_TYPE_BOOLEAN = 8 CLOUD_TYPE_ARRAY = 9 CLOUD_TYPE_TINY_DECIMAL = 10 CLOUD_TYPE_SMALL_DECIMAL = 11 CLOUD_TYPE_BIG_DECIMAL = 12 CLOUD_TYPE_SINGLE_CHAR = 13 CLOUD_TYPE_BINARY = 14 CLOUD_TYPE_VARBINARY = 15 CLOUD_TYPE_SINGLE_BYTE = 16 CLOUD_TYPE_LONG = 17 CLOUD_TYPE_INTERVAL = 18 CLOUD_TYPE_REVERSE = 19 CLOUD_TYPE_BLOB = 20 CLOUD_TYPE_CLOB = 21 CLOUD_TYPE_LONGVARBINARY = 22 CLOUD_TYPE_LONGVARCHAR = 23 CLOUD_TYPE_ROWID = 24 CLOUD_TYPE_BIG_INTEGER = 25 CLOUD_TYPE_SMALL_INTEGER = 26 CLOUD_TYPE_TINY_INTEGER = 27 CLOUD_TYPE_DAY_TIME_INTERVAL = 28 CLOUD_TYPE_YEAR_MONTH_INTERVAL = 29 CLOUD_TYPE_TIME_INTERVAL = 30 CLOUD_TYPE_PAIR = 31 CLOUD_TYPE_BYTE = 32 CLOUD_TYPE_BFILE = 33 //3.6.6 JDBC CLOUD_TYPE_INTS = 34 CLOUD_TYPE_JAVA_STRING = 35 CLOUD_TYPE_X1_LONG = 36 CLOUD_TYPE_X2_LONG = 37 CLOUD_TYPE_X_LONG = 38 CLOUD_TYPE_X_BYTES = 39 CLOUD_TYPE_RANGE_STRING = 40 CLOUD_TYPE_DEFAULT = 41 CLOUD_TYPE_RANK = 42 CLOUD_TYPE_COLLECTOR_SELECTION = 43 CLOUD_TYPE_GROUPING = 44 CLOUD_TYPE_NULL = 45 CLOUD_TYPE_NOTHING = 46 CLOUD_TYPE_MEDIA = 47 CLOUD_TYPE_FISCAL_YEAR = 48 CLOUD_TYPE_FISCAL_QUARTER = 49 CLOUD_TYPE_YEAR_MONTH = 50 CLOUD_TYPE_YEAR_MONTH_DAY = 51 CLOUD_TYPE_NUMBER = 52 //2021.9.12 HU give wei JDBC CLOUD_TYPE_DOUBLE_LONG = 53 CLOUD_TYPE_COMPACT_DATE = 54 CLOUD_TYPE_SHARED_COLUMN = 55 CLOUD_TYPE_ZONE_AUTO_SEQUENCE = 56 CLOUD_TYPE_JSON_ARRAY = 57 CLOUD_TYPE_JSON_KEYWORD = 58 CLOUD_TYPE_JSON_BINARY = 59 CLOUD_TYPE_JSON_TEXT = 60 CLOUD_TYPE_JSON_OBJECT = 61 CLOUD_TYPE_JSON_BIGDECIMAL = 62 CLOUD_TYPE_OTHER = -1 )
const ( CLOUDWAVE_EXECUTE = 0 CLOUDWAVE_EXECUTE_UPDATE = 1 CLOUDWAVE_EXECUTE_QUERY = 2 CLOUDWAVE_SELFUSEDRIVE = 0xff )
for cloudwave
const ( B_REQ_TAG byte = 0x02 E_REQ_TAG byte = 0x03 B_REQ_BUILD_CONNECTION = -1 B_REQ_CLOSE_CONNECTION = -2 B_REQ_PING = -3 B_REQ_STOP_SERVER = -4 B_REQ_BFILE_WRITE = -5 B_REQ_BFILE_READ = -6 B_REQ_BFILE_CREATE = -7 B_REQ_BFILE_SYNC = -8 B_REQ_BFILE_GETBYNAME = -9 B_REQ_BFILE_GETALL = -10 B_REQ_BFILE_GET_SEGMENT_TABLET_SERVER = -11 B_REQ_BFILE_DELETE = -12 B_REQ_TABLET_SERVER_CONNECT = -13 B_REQ_BFILE_CLOSE = -14 B_REQ_BFILE_GET_BY_ID = -15 B_REQ_BFILE_BATCH_WRITE = -16 B_REQ_BFILE_BATCH_CREATE = -17 B_REQ_BFILE_NFSBFILE_CREATE = -18 B_REQ_BFILE_GET_NFSBFILE_INPUTSTREAM = -19 B_REQ_GET_NEXT_TABLET_SERVER = -31 B_REQ_AUTO_TABLET_INSERT_FILES = -32 B_REQ_AUTO_TABLET_SYNC = -33 CONNECTION_SET_AUTO_COMMIT = 1 CONNECTION_CREATE_STATEMENT = 2 CONNECTION_CREATE_BLOB = 3 CONNECTION_CREATE_CLOB = 4 CLOSE_STATEMENT = 5 EXECUTE_STATEMENT = 6 EXECUTE_BATCH = 7 CONNECTION_PREPARED_STATEMENT = 8 CLOSE_PREPARED_STATEMENT = 9 EXECUTE_PREPARED_STATEMENT = 10 RESULT_SET_QUERY_NEXT = 11 RESULT_SET_QUERY_PREV = 12 RESULT_SET_RESOVE_LARGE_STRING_REF = 13 RESULT_SET_CLOSE = 14 DATABASE_META_DATA_GET_SCHEMAS = 15 DATABASE_META_DATA_GET_TABLESPACES = 16 DATABASE_META_DATA_GET_TABLES = 17 DATABASE_META_DATA_GET_TABLE_PRIVILEGES = 18 DATABASE_META_DATA_GET_USER_TABLE_PRIVILEGES = 19 DATABASE_META_DATA_GET_COLUMNS = 20 DATABASE_META_DATA_GET_PRIMARY_KEYS = 21 DATABASE_META_DATA_GET_EXPORTED_KEYS = 22 DATABASE_META_DATA_GET_IMPORTED_KEYS = 23 DATABASE_META_DATA_GET_CATALOGS = 24 DATABASE_META_DATA_GET_USERS = 25 BLOB_GET_BINARY_STREAM = 26 CONNECTION_COMMIT = 27 CONNECTION_ROLLBACK = 28 LOB_READ_BUFFER = 29 LOB_WRITE_BUFFER = 30 LOB_GET_DATA_BLOCK_INFO = 31 BLOB_LENGTH = 32 BLOB_GET_BYTES = 33 BLOB_POSITION_BYTEARRAY_PATTERN = 34 BLOB_POSITION_BLOB_PATTERN = 35 BLOB_SET_BYTES = 36 BLOB_SET_BINARY_STREAM = 37 BLOB_TRUNCATE = 38 BLOB_FREE = 39 CLOB_FREE = 40 CLOB_READ = 41 CLOB_WRITE = 42 CLOB_GET_ASCII_STREAM = 43 CLOB_GET_CHARACTER_STREAM = 44 CLOB_GET_SUB_STRING = 45 CLOB_LENGTH = 46 CLOB_POSITION_STRING = 47 CLOB_POSITION_CLOB = 48 CLOB_SET_ASCII_STREAM = 49 CLOB_SET_CHARACTER_STREAM = 50 CLOB_SET_STRING = 51 CLOB_TRUNCATE = 52 DISPLAY = 53 CONNECTION_SHUT_DOWN_SERVER = 54 CLEAR_CACHE = 55 DATABASE_META_DATA_LIST_SCHEMAS = 56 DATABASE_META_DATA_LIST_TABLES = 57 EXECUTE_STATEMENT_BATCH_INSERT = 58 CONNECTION_CREATE_BLOBS = 59 CONNECTION_CREATE_CLOBS = 60 CONNECTION_SET_TABLET_SPLIT_THRESHOLD = 61 EXECUTE_BATCH_PREPARED = 62 DATABASE_META_DATA_GET_TYPE_INFO = 63 CREATE_FULL_TEXT_INDEX = 64 FULL_TEXT_SEARCH = 65 DELETE_FULL_TEXT_INDEX = 66 HIGHLIGHT = 67 RESULT_SET_GET_RECORD_COUNT = 68 RESULT_SET_GET_EXECUTION_INFO = 69 DATABASE_META_DATA_GET_SERVERS = 70 DATABASE_META_DATA_GET_TABLETS = 71 DATABASE_META_DATA_GET_SEQUENCES = 72 DATA_LOAD = 73 CHECK_POINT = 74 GET_TABLET_RESULT_SET = 75 GET_INFO_FROM_HDFS = 76 GET_CPU_INFO = 77 GET_HDFS_DATA_BLOCK_SIZE = 78 EXECUTE_GC = 79 GET_RUNNING_SQL = 80 GET_RUNNING_TASK = 81 GET_ONLINE_USER = 82 GET_CACHE = 83 SET_TRANSACTION_ISOLATION = 84 CREATE_UDF = 85 DELETE_UDF = 86 GET_UDF_CLASS_NAME = 87 GET_UDF_METHOD_NAMES = 88 CONNECTION_CALLABLE_STATEMENT = 89 EXECUTE_CALLABLE_STATEMENT = 90 DATABASE_META_DATA_GET_RECORD_COUNT_OF_ALL_TABLETS = 91 DATABASE_META_DATA_GET_TABLET_COUNT = 92 GET_THREAD_INFO = 93 GET_FULLTEXTINDEX_INFO = 94 SET_AUTO_TABLET_RECORDCOUNT = 95 RESULT_SET_GET_TABLET_IDS = 96 GET_INC_LOGS = 97 REDO_INC_LOGS = 98 DATABASE_META_DATA_GET_DB_FILES = 99 DATABASE_META_DATA_GET_DB_FILE_DATA = 100 INSERT_DB_FILE_DATA = 101 CLOSE_DB_FILE_OUTPUT = 102 GET_SERVER_VERSION = 103 CONNECTION_CANCEL_STATEMENT = 104 GET_TRANSACTION_ISOLATION = 105 DATABASE_META_DATA_GET_SYSTEM_UTILIZATION = 106 DATABASE_META_DATA_GET_MEMORY_SIZE = 107 GET_CONFIG_OPTIONS = 108 GET_SYSTEM_OVERVIEW = 109 CONNECTION_SET_CLIENT_PROPERTIES = 110 DATABASE_META_DATA_GET_SCHEMA_OWNER = 111 DATABASE_UPDATE_PATCH = 112 DATABASE_RESTART_SERVER = 113 DATABASE_META_DATA_GET_USER_PRIVILEGES = 114 GET_INDEX_INFO = 115 DATABASE_UPDATE_LICENSE = 116 GET_BFILE_TABLE_TOTAL_LENGTH = 117 GET_BFILE_CONTENT_TABLE_TOTAL_LENGTH = 118 GET_BFILE_CONTENT_TABLE_EVERY_LENGTH = 119 GET_INFO_FOR_MAP_REDUCE = 120 IS_BFILE_UFS_STORE = 121 EXECUTE_STATEMENT_4_MR = 122 GET_TEXTINDEX_INFO = 123 DATABASE_META_DATA_GET_UNIQUE_KEYS = 124 RELOAD_CONFIGURATION = 125 CONNECTION_SET_CHECK_CONSTRAINTS = 126 TABLE_GET_RECORDS_BY_PKS = 127 DATABASE_GET_SQL_HISTORYS = 128 DATABASE_SET_SHARE_QUERYAREA = 129 DATABASE_GET_RUNTIME_REPORT = 130 UPDATE_CONFIG_OPTIONS = 131 DATABASE_META_DATA_GET_NETWORK_STATUS = 132 DATABASE_HEALTH_DIAGNOSTIC = 133 DATABASE_META_DATA_GET_COLUMNS_DEFAULT = 134 DATABASE_GET_SQL_STATISTICS = 135 RESULT_SET_GET_DISTRIBUTION = 136 RESULT_SET_GET_EXECUTION_STATISTICS = 137 RESULT_SET_GET_TABLET_PARTITION_IDS = 138 AUTO_TABLET_APPEND = 139 GET_SERVER_LOGGER = 140 DATABASE_COLLECT_LOGGER = 141 DATABASE_META_DATA_GET_TABLE_TYPES = 142 SET_FULLTEXT_INDEX_IS_AND_OPERATOR = 143 GET_FULLTEXT_INDEX_IS_AND_OPERATOR = 144 DATABASE_META_DATA_GET_SYNONYM_COLUMNS = 145 GET_SYNONYM_HINTS = 146 CONNECTION_SET_ENABLE_SAME_COLUMN_LINK = 147 GET_ALL_DOWNLEVELS = 148 DATABASE_META_DATA_GET_TABLE_SYNONYMS = 149 DATABASE_META_DATA_GET_TABLE_BASESEARCH_COLUMNS = 150 DATABASE_META_DATA_GET_LINK_KEYS = 151 GET_DOWNLEVEL_CHAINS = 152 DATABASE_META_DATA_GET_SCHEMA_FILES = 153 REFRESH = 154 SET_SCHEMA = 155 DATABASE_META_DATA_GET_SHARES = 156 GET_ZONE_SERVERS = 157 CREATE_TABLET = 158 EXECUTE_CHAT = 166 EXECUTE_STREAMING_CHAT = 167 GET_CHAT_RESULT = 173 QUERY_KNOWLEDGE = 174 )
for cloudwave
const DATAAREALEN = 32
const DataAvailableTime = 3 //Seconds
const END_OF_STREAMING_CHAT = "__end_of_streaming_chat__"
Variables ¶
var ( ErrInvalidConn = errors.New("invalid connection") ErrMalformPkt = errors.New("malformed packet") ErrNoTLS = errors.New("TLS requested but server does not support TLS") ErrCleartextPassword = errors.New("this user requires clear text authentication. If you still want to use it, please add 'allowCleartextPasswords=1' to your DSN") ErrNativePassword = errors.New("this user requires cloudwave native password authentication.") ErrOldPassword = errors.New("this user requires old password authentication. If you still want to use it, please add 'allowOldPasswords=1' to your DSN. See also https://github.com/CloudwaveDatabase/database_sql_cloudwave/wiki/old_passwords") ErrUnknownPlugin = errors.New("this authentication plugin is not supported") ErrOldProtocol = errors.New("CloudWave server does not support required protocol 41+") ErrPktSync = errors.New("commands out of sync. You can't run this command now") ErrPktSyncMul = errors.New("commands out of sync. Did you run multiple statements at once?") ErrPktTooLarge = errors.New("packet for query is too large. Try adjusting the 'max_allowed_packet' variable on the server") ErrBusyBuffer = errors.New("busy buffer") )
Various errors the driver might return. Can change between driver versions.
Functions ¶
func DeregisterLocalFile ¶
func DeregisterLocalFile(filePath string)
DeregisterLocalFile removes the given filepath from the allowlist.
func DeregisterReaderHandler ¶
func DeregisterReaderHandler(name string)
DeregisterReaderHandler removes the ReaderHandler function with the given name from the registry.
func DeregisterServerPubKey ¶
func DeregisterServerPubKey(name string)
DeregisterServerPubKey removes the public key registered with the given name.
func DeregisterTLSConfig ¶
func DeregisterTLSConfig(key string)
DeregisterTLSConfig removes the tls.Config associated with key.
func NewConnector ¶
NewConnector returns new driver.Connector.
func ReadLengthEncodedString ¶
returns the string read as a bytes slice, wheter the value is NULL, the number of bytes read and an error, in case the string is longer than the input slice
func RegisterDial
deprecated
RegisterDial registers a custom dial function. It can then be used by the network address mynet(addr), where mynet is the registered new network. addr is passed as a parameter to the dial function.
Deprecated: users should call RegisterDialContext instead
func RegisterDialContext ¶
func RegisterDialContext(net string, dial DialContextFunc)
RegisterDialContext registers a custom dial function. It can then be used by the network address mynet(addr), where mynet is the registered new network. The current context for the connection and its address is passed to the dial function.
func RegisterLocalFile ¶
func RegisterLocalFile(filePath string)
RegisterLocalFile adds the given file to the file allowlist, so that it can be used by "LOAD DATA LOCAL INFILE <filepath>". Alternatively you can allow the use of all local files with the DSN parameter 'allowAllFiles=true'
filePath := "/home/gopher/data.csv" cloudwave.RegisterLocalFile(filePath) err := db.Exec("LOAD DATA LOCAL INFILE '" + filePath + "' INTO TABLE foo") if err != nil { ...
func RegisterReaderHandler ¶
RegisterReaderHandler registers a handler function which is used to receive a io.Reader. The Reader can be used by "LOAD DATA LOCAL INFILE Reader::<name>". If the handler returns a io.ReadCloser Close() is called when the request is finished.
cloudwave.RegisterReaderHandler("data", func() io.Reader { var csvReader io.Reader // Some Reader that returns CSV data ... // Open Reader here return csvReader }) err := db.Exec("LOAD DATA LOCAL INFILE 'Reader::data' INTO TABLE foo") if err != nil { ...
func RegisterServerPubKey ¶
RegisterServerPubKey registers a server RSA public key which can be used to send data in a secure manner to the server without receiving the public key in a potentially insecure way from the server first. Registered keys can afterwards be used adding serverPubKey=<name> to the DSN.
Note: The provided rsa.PublicKey instance is exclusively owned by the driver after registering it and may not be modified.
data, err := ioutil.ReadFile("mykey.pem") if err != nil { log.Fatal(err) } block, _ := pem.Decode(data) if block == nil || block.Type != "PUBLIC KEY" { log.Fatal("failed to decode PEM block containing public key") } pub, err := x509.ParsePKIXPublicKey(block.Bytes) if err != nil { log.Fatal(err) } if rsaPubKey, ok := pub.(*rsa.PublicKey); ok { cloudwave.RegisterServerPubKey("mykey", rsaPubKey) } else { log.Fatal("not a RSA public key") }
func RegisterTLSConfig ¶
RegisterTLSConfig registers a custom tls.Config to be used with sql.Open. Use the key as a value in the DSN where tls=value.
Note: The provided tls.Config is exclusively owned by the driver after registering it.
rootCertPool := x509.NewCertPool() pem, err := ioutil.ReadFile("/path/ca-cert.pem") if err != nil { log.Fatal(err) } if ok := rootCertPool.AppendCertsFromPEM(pem); !ok { log.Fatal("Failed to append PEM.") } clientCert := make([]tls.Certificate, 0, 1) certs, err := tls.LoadX509KeyPair("/path/client-cert.pem", "/path/client-key.pem") if err != nil { log.Fatal(err) } clientCert = append(clientCert, certs) cloudwave.RegisterTLSConfig("custom", &tls.Config{ RootCAs: rootCertPool, Certificates: clientCert, }) db, err := sql.Open("cloudwave", "user@tcp(localhost:3306)/test?tls=custom")
Types ¶
type CloudBlob ¶
type CloudBlob struct {
// contains filtered or unexported fields
}
func (*CloudBlob) GetBlob_File ¶
type CloudClob ¶
type CloudClob struct {
// contains filtered or unexported fields
}
func (*CloudClob) GetClob_File ¶
type CloudWaveDriver ¶
type CloudWaveDriver struct{}
CloudWaveDriver is exported to make the driver directly accessible. In general the driver is used via the database/sql package.
func (CloudWaveDriver) Open ¶
func (d CloudWaveDriver) Open(dsn string) (driver.Conn, error)
Open new Connection. See https://github.com/go-sql-driver/mysql#dsn-data-source-name for how the DSN string is formatted
func (CloudWaveDriver) OpenConnector ¶
func (d CloudWaveDriver) OpenConnector(dsn string) (driver.Connector, error)
OpenConnector implements driver.DriverContext.
type CloudWaveError ¶
type CloudWaveError struct { Message string // contains filtered or unexported fields }
CloudWaveError is an error type which represents a single MySQL error
func (*CloudWaveError) Error ¶
func (me *CloudWaveError) Error() string
func (*CloudWaveError) Is ¶
func (me *CloudWaveError) Is(err error) bool
type Config ¶
type Config struct { User string // Username Passwd string // Password (requires User) Net string // Network type Addr string // Network address (requires Net) DBName string // Database name Params map[string]string // Connection parameters Collation string // Connection collation Loc *time.Location // Location for time.Time values MaxAllowedPacket int // Max packet size allowed ServerPubKey string // Server public key name TLSConfig string // TLS configuration name Timeout time.Duration // Dial timeout ReadTimeout time.Duration // I/O read timeout WriteTimeout time.Duration // I/O write timeout AllowAllFiles bool // Allow all files to be used with LOAD DATA LOCAL INFILE AllowCleartextPasswords bool // Allows the cleartext client side plugin AllowNativePasswords bool // Allows the native password authentication method AllowOldPasswords bool // Allows the old insecure password method CheckConnLiveness bool // Check connections for liveness before using them ClientFoundRows bool // Return number of matching rows instead of rows changed ColumnsWithAlias bool // Prepend table alias to column names InterpolateParams bool // Interpolate placeholders into query string MultiStatements bool // Allow multiple statements in one query ParseTime bool // Parse time values to time.Time RejectReadOnly bool // Reject read-only connections // contains filtered or unexported fields }
Config is a configuration parsed from a DSN string. If a new Config is created instead of being parsed from a DSN string, the NewConfig function should be used, which sets default values.
type DialContextFunc ¶
DialContextFunc is a function which can be used to establish the network connection. Custom dial functions must be registered with RegisterDialContext
type Expand ¶
type Expand struct { //Dsn string Db *sql.DB StmtId int32 ChatType string // contains filtered or unexported fields }
func (*Expand) ChatResult ¶
func (Expand) CloseStatement ¶
func (Expand) CreateStatement ¶
func (*Expand) NextStreamingChat ¶
func (*Expand) QueryKnowledge ¶
func (*Expand) StreamingChat ¶
func (*Expand) StreamingChatBegin ¶
func (*Expand) StreamingChatEnd ¶
func (e *Expand) StreamingChatEnd()
func (*Expand) StreamingChatType ¶
type Logger ¶
type Logger interface {
Print(v ...interface{})
}
Logger is used to log critical error messages.
type NullTime
deprecated
NullTime represents a time.Time that may be NULL. NullTime implements the Scanner interface so it can be used as a scan destination:
var nt NullTime err := db.QueryRow("SELECT time FROM foo WHERE id=?", id).Scan(&nt) ... if nt.Valid { // use nt.Time } else { // NULL value }
This NullTime implementation is not driver-specific ¶
Deprecated: NullTime doesn't honor the loc DSN parameter. NullTime.Scan interprets a time as UTC, not the loc DSN parameter. Use sql.NullTime instead.