Merge pull request #7300 from frouioui/master

Addition of @@enable_system_settings to vtgate
This commit is contained in:
Andres Taylor 2021-01-20 14:50:28 +01:00 коммит произвёл GitHub
Родитель 9ac7dc8911 4bfaf2d956
Коммит d54b87c83f
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
15 изменённых файлов: 271 добавлений и 138 удалений

Просмотреть файл

@ -319,3 +319,38 @@ func TestSetSystemVarInTxWithConnError(t *testing.T) {
// subsequent queries on 80- will pass
assertMatches(t, conn, "select id, @@sql_safe_updates from test where id = 4", "[[INT64(4) INT64(1)]]")
}
func TestEnableSystemSettings(t *testing.T) {
vtParams := mysql.ConnParams{
Host: "localhost",
Port: clusterInstance.VtgateMySQLPort,
}
conn, err := mysql.Connect(context.Background(), &vtParams)
require.NoError(t, err)
defer conn.Close()
// Insert a single row to correctly select @@enable_system_settings.
// See: https://github.com/vitessio/vitess/issues/7301
checkedExec(t, conn, "delete from test")
checkedExec(t, conn, "insert into test (id, val1, val2, val3) values (1, null, 0, 0)")
// test set @@enable_system_settings to false and true
checkedExec(t, conn, "set enable_system_settings = false")
assertMatches(t, conn, `select @@enable_system_settings from test`, `[[INT64(0)]]`)
checkedExec(t, conn, "set enable_system_settings = true")
assertMatches(t, conn, `select @@enable_system_settings from test`, `[[INT64(1)]]`)
// prepare the @@sql_mode variable
checkedExec(t, conn, "set sql_mode = 'NO_ZERO_DATE'")
assertMatches(t, conn, "select @@sql_mode", `[[VARCHAR("NO_ZERO_DATE")]]`)
// check disabling @@enable_system_settings
checkedExec(t, conn, "set enable_system_settings = false")
checkedExec(t, conn, "set sql_mode = ''") // attempting to set @@sql_mode to an empty string
assertMatches(t, conn, "select @@sql_mode", `[[VARCHAR("NO_ZERO_DATE")]]`) // @@sql_mode did not change
// check enabling @@enable_system_settings
checkedExec(t, conn, "set enable_system_settings = true")
checkedExec(t, conn, "set sql_mode = ''") // changing @@sql_mode to empty string
assertMatches(t, conn, "select @@sql_mode", `[[VARCHAR("")]]`) // @@sql_mode did change
}

Просмотреть файл

@ -156,7 +156,9 @@ type Session struct {
// DDL strategy
DDLStrategy string `protobuf:"bytes,21,opt,name=DDLStrategy,proto3" json:"DDLStrategy,omitempty"`
// Session UUID
SessionUUID string `protobuf:"bytes,22,opt,name=SessionUUID,proto3" json:"SessionUUID,omitempty"`
SessionUUID string `protobuf:"bytes,22,opt,name=SessionUUID,proto3" json:"SessionUUID,omitempty"`
// enable_system_settings defines if we can use reserved connections.
EnableSystemSettings bool `protobuf:"varint,23,opt,name=enable_system_settings,json=enableSystemSettings,proto3" json:"enable_system_settings,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -334,6 +336,13 @@ func (m *Session) GetSessionUUID() string {
return ""
}
func (m *Session) GetEnableSystemSettings() bool {
if m != nil {
return m.EnableSystemSettings
}
return false
}
type Session_ShardSession struct {
Target *query.Target `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
TransactionId int64 `protobuf:"varint,2,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"`
@ -1101,90 +1110,92 @@ func init() {
func init() { proto.RegisterFile("vtgate.proto", fileDescriptor_aab96496ceaf1ebb) }
var fileDescriptor_aab96496ceaf1ebb = []byte{
// 1357 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0x6d, 0x6f, 0x1b, 0xc5,
0x13, 0xef, 0xf9, 0xd9, 0xe3, 0xa7, 0xcb, 0xe6, 0xe1, 0x7f, 0xcd, 0xbf, 0x80, 0xe5, 0xb6, 0xaa,
0x5b, 0x50, 0x02, 0x41, 0x40, 0x85, 0x40, 0x90, 0xd8, 0x6e, 0x71, 0x95, 0xd4, 0x61, 0xed, 0x24,
0x12, 0x02, 0x9d, 0x2e, 0xbe, 0x8d, 0xb3, 0x8a, 0x73, 0xeb, 0xee, 0xae, 0x1d, 0xfc, 0x29, 0x78,
0x0f, 0x1f, 0x80, 0x37, 0xbc, 0xe7, 0x3b, 0xf0, 0x8e, 0x6f, 0x84, 0x76, 0xf7, 0xce, 0x3e, 0xbb,
0x81, 0xa6, 0xad, 0xfa, 0xc6, 0xba, 0x9d, 0xdf, 0xec, 0xec, 0xcc, 0xfc, 0x66, 0x76, 0xd6, 0x50,
0x9c, 0xc8, 0x81, 0x27, 0xc9, 0xd6, 0x88, 0x33, 0xc9, 0x50, 0xc6, 0xac, 0x36, 0xed, 0x53, 0x1a,
0x0c, 0xd9, 0xc0, 0xf7, 0xa4, 0x67, 0x90, 0xcd, 0xc2, 0x8b, 0x31, 0xe1, 0xd3, 0x70, 0x51, 0x96,
0x6c, 0xc4, 0xe2, 0xe0, 0x44, 0xf2, 0x51, 0xdf, 0x2c, 0x6a, 0xbf, 0x15, 0x20, 0xdb, 0x25, 0x42,
0x50, 0x16, 0xa0, 0xfb, 0x50, 0xa6, 0x81, 0x2b, 0xb9, 0x17, 0x08, 0xaf, 0x2f, 0x29, 0x0b, 0x1c,
0xab, 0x6a, 0xd5, 0x73, 0xb8, 0x44, 0x83, 0xde, 0x5c, 0x88, 0x1a, 0x50, 0x16, 0xe7, 0x1e, 0xf7,
0x5d, 0x61, 0xf6, 0x09, 0x27, 0x51, 0x4d, 0xd6, 0x0b, 0x3b, 0x77, 0xb6, 0x42, 0xef, 0x42, 0x7b,
0x5b, 0x5d, 0xa5, 0x15, 0x2e, 0x70, 0x49, 0xc4, 0x56, 0x02, 0xbd, 0x0f, 0xe0, 0x8d, 0x25, 0xeb,
0xb3, 0xcb, 0x4b, 0x2a, 0x9d, 0x94, 0x3e, 0x27, 0x26, 0x41, 0x77, 0xa1, 0x24, 0x3d, 0x3e, 0x20,
0xd2, 0x15, 0x92, 0xd3, 0x60, 0xe0, 0xa4, 0xab, 0x56, 0x3d, 0x8f, 0x8b, 0x46, 0xd8, 0xd5, 0x32,
0xb4, 0x0d, 0x59, 0x36, 0x92, 0xda, 0x85, 0x4c, 0xd5, 0xaa, 0x17, 0x76, 0xd6, 0xb7, 0x4c, 0xe0,
0xad, 0x9f, 0x49, 0x7f, 0x2c, 0x49, 0xc7, 0x80, 0x38, 0xd2, 0x42, 0x7b, 0x60, 0xc7, 0xc2, 0x73,
0x2f, 0x99, 0x4f, 0x9c, 0x6c, 0xd5, 0xaa, 0x97, 0x77, 0xfe, 0x17, 0x39, 0x1f, 0x8b, 0xf4, 0x80,
0xf9, 0x04, 0x57, 0xe4, 0xa2, 0x00, 0x6d, 0x43, 0xee, 0xca, 0xe3, 0x01, 0x0d, 0x06, 0xc2, 0xc9,
0xe9, 0xc0, 0x57, 0xc3, 0x53, 0xbf, 0x57, 0xbf, 0x27, 0x06, 0xc3, 0x33, 0x25, 0xf4, 0x0d, 0x14,
0x47, 0x9c, 0xcc, 0xb3, 0x95, 0xbf, 0x41, 0xb6, 0x0a, 0x23, 0x4e, 0x66, 0xb9, 0xda, 0x85, 0xd2,
0x88, 0x09, 0x39, 0xb7, 0x00, 0x37, 0xb0, 0x50, 0x54, 0x5b, 0x66, 0x26, 0xee, 0x41, 0x79, 0xe8,
0x09, 0xe9, 0xd2, 0x40, 0x10, 0x2e, 0x5d, 0xea, 0x3b, 0x85, 0xaa, 0x55, 0x4f, 0xe1, 0xa2, 0x92,
0xb6, 0xb5, 0xb0, 0xed, 0xa3, 0xf7, 0x00, 0xce, 0xd8, 0x38, 0xf0, 0x5d, 0xce, 0xae, 0x84, 0x53,
0xd4, 0x1a, 0x79, 0x2d, 0xc1, 0xec, 0x4a, 0x20, 0x17, 0x36, 0xc6, 0x82, 0x70, 0xd7, 0x27, 0x67,
0x34, 0x20, 0xbe, 0x3b, 0xf1, 0x38, 0xf5, 0x4e, 0x87, 0x44, 0x38, 0x25, 0xed, 0xd0, 0xc3, 0x65,
0x87, 0x8e, 0x04, 0xe1, 0x4d, 0xa3, 0x7c, 0x1c, 0xe9, 0xb6, 0x02, 0xc9, 0xa7, 0x78, 0x6d, 0x7c,
0x0d, 0x84, 0x3a, 0x60, 0x8b, 0xa9, 0x90, 0xe4, 0x32, 0x66, 0xba, 0xac, 0x4d, 0xdf, 0x7b, 0x29,
0x56, 0xad, 0xb7, 0x64, 0xb5, 0x22, 0x16, 0xa5, 0xe8, 0xff, 0x90, 0xe7, 0xec, 0xca, 0xed, 0xb3,
0x71, 0x20, 0x9d, 0x4a, 0xd5, 0xaa, 0x27, 0x71, 0x8e, 0xb3, 0xab, 0x86, 0x5a, 0xab, 0x12, 0x14,
0xde, 0x84, 0x8c, 0x18, 0x0d, 0xa4, 0x70, 0xec, 0x6a, 0xb2, 0x9e, 0xc7, 0x31, 0x09, 0xaa, 0x83,
0x4d, 0x03, 0x97, 0x13, 0x41, 0xf8, 0x84, 0xf8, 0x6e, 0x9f, 0x05, 0x81, 0xb3, 0xa2, 0x0b, 0xb5,
0x4c, 0x03, 0x1c, 0x8a, 0x1b, 0x2c, 0x08, 0x14, 0xc3, 0x43, 0xd6, 0xbf, 0x88, 0x08, 0x72, 0x90,
0x2e, 0xc6, 0x57, 0x30, 0xac, 0x76, 0x44, 0x9d, 0xb7, 0x05, 0xab, 0x9a, 0x1e, 0x6d, 0xe5, 0x9c,
0x78, 0x5c, 0x9e, 0x12, 0x4f, 0x3a, 0xab, 0xda, 0xe3, 0x15, 0x05, 0xed, 0xb3, 0xfe, 0xc5, 0x77,
0x11, 0x80, 0xbe, 0x05, 0x9b, 0x13, 0xcf, 0x77, 0xbd, 0x33, 0x49, 0xb8, 0x7b, 0xc5, 0xa9, 0x24,
0xce, 0x9a, 0x3e, 0x74, 0x23, 0x3a, 0x14, 0x13, 0xcf, 0xdf, 0x55, 0xf0, 0x89, 0x42, 0x71, 0x99,
0x2f, 0xac, 0x51, 0x15, 0x0a, 0xcd, 0xe6, 0x7e, 0x57, 0x72, 0x4f, 0x92, 0xc1, 0xd4, 0x59, 0xd7,
0xdd, 0x15, 0x17, 0x29, 0x8d, 0xd0, 0xbd, 0xa3, 0xa3, 0x76, 0xd3, 0xd9, 0x30, 0x1a, 0x31, 0xd1,
0xe6, 0x9f, 0x16, 0x14, 0xe3, 0x31, 0xa1, 0xfb, 0x90, 0x31, 0xfd, 0xa9, 0x2f, 0x8e, 0xc2, 0x4e,
0x29, 0x6c, 0x8c, 0x9e, 0x16, 0xe2, 0x10, 0x54, 0xf7, 0x4c, 0xbc, 0x0b, 0xa9, 0xef, 0x24, 0x74,
0xa0, 0xa5, 0x98, 0xb4, 0xed, 0xa3, 0xc7, 0x50, 0x94, 0x8a, 0x46, 0xe9, 0x7a, 0x43, 0xea, 0x09,
0x27, 0x19, 0xb6, 0xf8, 0xec, 0x3a, 0xeb, 0x69, 0x74, 0x57, 0x81, 0xb8, 0x20, 0xe7, 0x0b, 0xf4,
0x01, 0x14, 0x66, 0xb4, 0x51, 0x5f, 0xdf, 0x2e, 0x49, 0x0c, 0x91, 0xa8, 0xed, 0x6f, 0xfe, 0x08,
0xb7, 0xff, 0xb5, 0x36, 0x91, 0x0d, 0xc9, 0x0b, 0x32, 0xd5, 0x21, 0xe4, 0xb1, 0xfa, 0x44, 0x0f,
0x21, 0x3d, 0xf1, 0x86, 0x63, 0xa2, 0xfd, 0x9c, 0xf7, 0xfb, 0x1e, 0x0d, 0x66, 0x7b, 0xb1, 0xd1,
0xf8, 0x32, 0xf1, 0xd8, 0xda, 0xdc, 0x83, 0xb5, 0xeb, 0xca, 0xf3, 0x1a, 0xc3, 0x6b, 0x71, 0xc3,
0xf9, 0x98, 0x8d, 0x67, 0xa9, 0x5c, 0xd2, 0x4e, 0xd5, 0xfe, 0xb0, 0xa0, 0xbc, 0x48, 0x24, 0xfa,
0x04, 0xd6, 0x97, 0xa9, 0x77, 0x07, 0x92, 0xfa, 0xa1, 0x59, 0xb4, 0xc8, 0xf3, 0x53, 0x49, 0x7d,
0xf4, 0x05, 0x38, 0x2f, 0x6d, 0x91, 0xf4, 0x92, 0xb0, 0xb1, 0xd4, 0x07, 0x5b, 0x78, 0x7d, 0x71,
0x57, 0xcf, 0x80, 0xaa, 0x2c, 0xc3, 0x92, 0x56, 0x53, 0xa1, 0x7f, 0xa1, 0x0f, 0x32, 0x44, 0xe4,
0xf0, 0x4a, 0x08, 0xf5, 0x14, 0xa2, 0xce, 0x11, 0xb5, 0xdf, 0x13, 0x50, 0x0e, 0xaf, 0x5e, 0x4c,
0x5e, 0x8c, 0x89, 0x90, 0xe8, 0x23, 0xc8, 0xf7, 0xbd, 0xe1, 0x90, 0x70, 0x37, 0x74, 0xb1, 0xb0,
0x53, 0xd9, 0x32, 0x03, 0xa8, 0xa1, 0xe5, 0xed, 0x26, 0xce, 0x19, 0x8d, 0xb6, 0x8f, 0x1e, 0x42,
0x36, 0xea, 0xa1, 0xc4, 0x4c, 0x37, 0xde, 0x43, 0x38, 0xc2, 0xd1, 0x03, 0x48, 0x6b, 0x16, 0xc2,
0xb2, 0x58, 0x89, 0x38, 0x51, 0xb7, 0x95, 0xbe, 0x88, 0xb1, 0xc1, 0xd1, 0x67, 0x10, 0xd6, 0x86,
0x2b, 0xa7, 0x23, 0xa2, 0x8b, 0xa1, 0xbc, 0xb3, 0xb6, 0x5c, 0x45, 0xbd, 0xe9, 0x88, 0x60, 0x90,
0xb3, 0x6f, 0x55, 0xa4, 0x17, 0x64, 0x2a, 0x46, 0x5e, 0x9f, 0xb8, 0x7a, 0x74, 0xe9, 0x11, 0x93,
0xc7, 0xa5, 0x48, 0xaa, 0x2b, 0x3f, 0x3e, 0x82, 0xb2, 0x37, 0x19, 0x41, 0xcf, 0x52, 0xb9, 0xb4,
0x9d, 0xa9, 0xfd, 0x62, 0x41, 0x65, 0x96, 0x29, 0x31, 0x62, 0x81, 0x50, 0x27, 0xa6, 0x09, 0xe7,
0x8c, 0x2f, 0xa5, 0x09, 0x1f, 0x36, 0x5a, 0x4a, 0x8c, 0x0d, 0xfa, 0x3a, 0x39, 0x7a, 0x04, 0x19,
0x4e, 0xc4, 0x78, 0x28, 0xc3, 0x24, 0xa1, 0xf8, 0xa0, 0xc2, 0x1a, 0xc1, 0xa1, 0x46, 0xed, 0xef,
0x04, 0xac, 0x86, 0x1e, 0xed, 0x79, 0xb2, 0x7f, 0xfe, 0xce, 0x09, 0xfc, 0x10, 0xb2, 0xca, 0x1b,
0x4a, 0x54, 0x41, 0x25, 0xaf, 0xa7, 0x30, 0xd2, 0x78, 0x0b, 0x12, 0x3d, 0xb1, 0xf0, 0xa2, 0x49,
0x9b, 0x17, 0x8d, 0x27, 0xe2, 0x2f, 0x9a, 0x77, 0xc4, 0x75, 0xed, 0x57, 0x0b, 0xd6, 0x16, 0x73,
0xfa, 0xce, 0xa8, 0xfe, 0x18, 0xb2, 0x86, 0xc8, 0x28, 0x9b, 0x1b, 0xa1, 0x6f, 0x86, 0xe6, 0x13,
0x2a, 0xcf, 0x8d, 0xe9, 0x48, 0x4d, 0x35, 0xeb, 0x5a, 0x57, 0x72, 0xe2, 0x5d, 0xbe, 0x55, 0xcb,
0xce, 0xfa, 0x30, 0xf1, 0x7a, 0x7d, 0x98, 0x7c, 0xe3, 0x3e, 0x4c, 0xbd, 0x82, 0x9b, 0xf4, 0x8d,
0x9e, 0x82, 0xb1, 0xdc, 0x66, 0xfe, 0x3b, 0xb7, 0xb5, 0x06, 0xac, 0x2f, 0x25, 0x2a, 0xa4, 0x71,
0xde, 0x5f, 0xd6, 0x2b, 0xfb, 0xeb, 0x27, 0xb8, 0x8d, 0x89, 0x60, 0xc3, 0x09, 0x89, 0x55, 0xde,
0x9b, 0xa5, 0x1c, 0x41, 0xca, 0x97, 0xe1, 0xd4, 0xcc, 0x63, 0xfd, 0x5d, 0xbb, 0x03, 0x9b, 0xd7,
0x99, 0x37, 0x8e, 0xd6, 0xfe, 0xb2, 0xa0, 0x7c, 0x6c, 0x62, 0x78, 0xb3, 0x23, 0x97, 0xc8, 0x4b,
0xdc, 0x90, 0xbc, 0x07, 0x90, 0x9e, 0xe8, 0xe1, 0x14, 0x5d, 0xd2, 0xb1, 0x7f, 0x2a, 0xc7, 0x6a,
0x66, 0x60, 0x83, 0xab, 0x4c, 0x9e, 0xd1, 0xa1, 0x24, 0x5c, 0xb3, 0xab, 0x32, 0x19, 0xd3, 0x7c,
0xa2, 0x11, 0x1c, 0x6a, 0xd4, 0xbe, 0x86, 0xca, 0x2c, 0x96, 0x39, 0x11, 0x64, 0x42, 0xd4, 0x33,
0xce, 0xd2, 0xc5, 0xbf, 0xb0, 0xfd, 0xb8, 0xa5, 0x20, 0x1c, 0x6a, 0x3c, 0x6a, 0x42, 0x65, 0xe9,
0x8d, 0x8f, 0x2a, 0x50, 0x38, 0x7a, 0xde, 0x3d, 0x6c, 0x35, 0xda, 0x4f, 0xda, 0xad, 0xa6, 0x7d,
0x0b, 0x01, 0x64, 0xba, 0xed, 0xe7, 0x4f, 0xf7, 0x5b, 0xb6, 0x85, 0xf2, 0x90, 0x3e, 0x38, 0xda,
0xef, 0xb5, 0xed, 0x84, 0xfa, 0xec, 0x9d, 0x74, 0x0e, 0x1b, 0x76, 0xf2, 0xd1, 0x57, 0x50, 0x68,
0xe8, 0x7f, 0x2a, 0x1d, 0xee, 0x13, 0xae, 0x36, 0x3c, 0xef, 0xe0, 0x83, 0xdd, 0x7d, 0xfb, 0x16,
0xca, 0x42, 0xf2, 0x10, 0xab, 0x9d, 0x39, 0x48, 0x1d, 0x76, 0xba, 0x3d, 0x3b, 0x81, 0xca, 0x00,
0xbb, 0x47, 0xbd, 0x4e, 0xa3, 0x73, 0x70, 0xd0, 0xee, 0xd9, 0xc9, 0xbd, 0xcf, 0xa1, 0x42, 0xd9,
0xd6, 0x84, 0x4a, 0x22, 0x84, 0xf9, 0x23, 0xf6, 0xc3, 0xdd, 0x70, 0x45, 0xd9, 0xb6, 0xf9, 0xda,
0x1e, 0xb0, 0xed, 0x89, 0xdc, 0xd6, 0xe8, 0xb6, 0x29, 0xcd, 0xd3, 0x8c, 0x5e, 0x7d, 0xfa, 0x4f,
0x00, 0x00, 0x00, 0xff, 0xff, 0x90, 0xad, 0x39, 0x45, 0x08, 0x0e, 0x00, 0x00,
// 1382 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdd, 0x6e, 0x1b, 0xb7,
0x12, 0xce, 0xea, 0x5f, 0xa3, 0xbf, 0x35, 0x2d, 0x3b, 0x1b, 0x9f, 0x9c, 0x73, 0x04, 0x25, 0x41,
0x94, 0x9c, 0x03, 0xbb, 0x75, 0xff, 0x82, 0xa2, 0x45, 0x6b, 0xcb, 0x4a, 0xaa, 0xc0, 0x8e, 0x5c,
0x4a, 0xb6, 0x81, 0xa2, 0xc5, 0x62, 0xad, 0xa5, 0x65, 0xc2, 0xf2, 0x52, 0x21, 0x29, 0xb9, 0x7a,
0x8a, 0xde, 0xf7, 0x05, 0x7a, 0xd3, 0xfb, 0xbe, 0x43, 0xef, 0xf2, 0x46, 0x05, 0xc9, 0x5d, 0x69,
0xa5, 0xb8, 0x8d, 0x93, 0x20, 0x37, 0xc2, 0x72, 0xbe, 0xe1, 0x70, 0x38, 0xdf, 0xfc, 0x50, 0x50,
0x9c, 0xc8, 0x81, 0x27, 0xc9, 0xe6, 0x88, 0x33, 0xc9, 0x50, 0xc6, 0xac, 0x36, 0xec, 0x53, 0x1a,
0x0c, 0xd9, 0xc0, 0xf7, 0xa4, 0x67, 0x90, 0x8d, 0xc2, 0xcb, 0x31, 0xe1, 0xd3, 0x70, 0x51, 0x96,
0x6c, 0xc4, 0xe2, 0xe0, 0x44, 0xf2, 0x51, 0xdf, 0x2c, 0xea, 0xaf, 0x0a, 0x90, 0xed, 0x12, 0x21,
0x28, 0x0b, 0xd0, 0x03, 0x28, 0xd3, 0xc0, 0x95, 0xdc, 0x0b, 0x84, 0xd7, 0x97, 0x94, 0x05, 0x8e,
0x55, 0xb3, 0x1a, 0x39, 0x5c, 0xa2, 0x41, 0x6f, 0x2e, 0x44, 0x4d, 0x28, 0x8b, 0x73, 0x8f, 0xfb,
0xae, 0x30, 0xfb, 0x84, 0x93, 0xa8, 0x25, 0x1b, 0x85, 0xed, 0xbb, 0x9b, 0xa1, 0x77, 0xa1, 0xbd,
0xcd, 0xae, 0xd2, 0x0a, 0x17, 0xb8, 0x24, 0x62, 0x2b, 0x81, 0xfe, 0x03, 0xe0, 0x8d, 0x25, 0xeb,
0xb3, 0xcb, 0x4b, 0x2a, 0x9d, 0x94, 0x3e, 0x27, 0x26, 0x41, 0xf7, 0xa0, 0x24, 0x3d, 0x3e, 0x20,
0xd2, 0x15, 0x92, 0xd3, 0x60, 0xe0, 0xa4, 0x6b, 0x56, 0x23, 0x8f, 0x8b, 0x46, 0xd8, 0xd5, 0x32,
0xb4, 0x05, 0x59, 0x36, 0x92, 0xda, 0x85, 0x4c, 0xcd, 0x6a, 0x14, 0xb6, 0xd7, 0x36, 0xcd, 0xc5,
0x5b, 0x3f, 0x93, 0xfe, 0x58, 0x92, 0x8e, 0x01, 0x71, 0xa4, 0x85, 0x76, 0xc1, 0x8e, 0x5d, 0xcf,
0xbd, 0x64, 0x3e, 0x71, 0xb2, 0x35, 0xab, 0x51, 0xde, 0xbe, 0x1d, 0x39, 0x1f, 0xbb, 0xe9, 0x01,
0xf3, 0x09, 0xae, 0xc8, 0x45, 0x01, 0xda, 0x82, 0xdc, 0x95, 0xc7, 0x03, 0x1a, 0x0c, 0x84, 0x93,
0xd3, 0x17, 0x5f, 0x0d, 0x4f, 0xfd, 0x5e, 0xfd, 0x9e, 0x18, 0x0c, 0xcf, 0x94, 0xd0, 0x37, 0x50,
0x1c, 0x71, 0x32, 0x8f, 0x56, 0xfe, 0x06, 0xd1, 0x2a, 0x8c, 0x38, 0x99, 0xc5, 0x6a, 0x07, 0x4a,
0x23, 0x26, 0xe4, 0xdc, 0x02, 0xdc, 0xc0, 0x42, 0x51, 0x6d, 0x99, 0x99, 0xb8, 0x0f, 0xe5, 0xa1,
0x27, 0xa4, 0x4b, 0x03, 0x41, 0xb8, 0x74, 0xa9, 0xef, 0x14, 0x6a, 0x56, 0x23, 0x85, 0x8b, 0x4a,
0xda, 0xd6, 0xc2, 0xb6, 0x8f, 0xfe, 0x0d, 0x70, 0xc6, 0xc6, 0x81, 0xef, 0x72, 0x76, 0x25, 0x9c,
0xa2, 0xd6, 0xc8, 0x6b, 0x09, 0x66, 0x57, 0x02, 0xb9, 0xb0, 0x3e, 0x16, 0x84, 0xbb, 0x3e, 0x39,
0xa3, 0x01, 0xf1, 0xdd, 0x89, 0xc7, 0xa9, 0x77, 0x3a, 0x24, 0xc2, 0x29, 0x69, 0x87, 0x1e, 0x2d,
0x3b, 0x74, 0x24, 0x08, 0xdf, 0x33, 0xca, 0xc7, 0x91, 0x6e, 0x2b, 0x90, 0x7c, 0x8a, 0xab, 0xe3,
0x6b, 0x20, 0xd4, 0x01, 0x5b, 0x4c, 0x85, 0x24, 0x97, 0x31, 0xd3, 0x65, 0x6d, 0xfa, 0xfe, 0x6b,
0x77, 0xd5, 0x7a, 0x4b, 0x56, 0x2b, 0x62, 0x51, 0x8a, 0xfe, 0x05, 0x79, 0xce, 0xae, 0xdc, 0x3e,
0x1b, 0x07, 0xd2, 0xa9, 0xd4, 0xac, 0x46, 0x12, 0xe7, 0x38, 0xbb, 0x6a, 0xaa, 0xb5, 0x4a, 0x41,
0xe1, 0x4d, 0xc8, 0x88, 0xd1, 0x40, 0x0a, 0xc7, 0xae, 0x25, 0x1b, 0x79, 0x1c, 0x93, 0xa0, 0x06,
0xd8, 0x34, 0x70, 0x39, 0x11, 0x84, 0x4f, 0x88, 0xef, 0xf6, 0x59, 0x10, 0x38, 0x2b, 0x3a, 0x51,
0xcb, 0x34, 0xc0, 0xa1, 0xb8, 0xc9, 0x82, 0x40, 0x31, 0x3c, 0x64, 0xfd, 0x8b, 0x88, 0x20, 0x07,
0xe9, 0x64, 0x7c, 0x03, 0xc3, 0x6a, 0x47, 0x54, 0x79, 0x9b, 0xb0, 0xaa, 0xe9, 0xd1, 0x56, 0xce,
0x89, 0xc7, 0xe5, 0x29, 0xf1, 0xa4, 0xb3, 0xaa, 0x3d, 0x5e, 0x51, 0xd0, 0x3e, 0xeb, 0x5f, 0x7c,
0x17, 0x01, 0xe8, 0x5b, 0xb0, 0x39, 0xf1, 0x7c, 0xd7, 0x3b, 0x93, 0x84, 0xbb, 0x57, 0x9c, 0x4a,
0xe2, 0x54, 0xf5, 0xa1, 0xeb, 0xd1, 0xa1, 0x98, 0x78, 0xfe, 0x8e, 0x82, 0x4f, 0x14, 0x8a, 0xcb,
0x7c, 0x61, 0x8d, 0x6a, 0x50, 0xd8, 0xdb, 0xdb, 0xef, 0x4a, 0xee, 0x49, 0x32, 0x98, 0x3a, 0x6b,
0xba, 0xba, 0xe2, 0x22, 0xa5, 0x11, 0xba, 0x77, 0x74, 0xd4, 0xde, 0x73, 0xd6, 0x8d, 0x46, 0x4c,
0x84, 0x3e, 0x85, 0x75, 0x12, 0xa8, 0x40, 0xbb, 0x21, 0x6b, 0x82, 0x48, 0xa9, 0xeb, 0xe2, 0xb6,
0x0e, 0x53, 0xd5, 0xa0, 0x86, 0xaa, 0x6e, 0x88, 0x6d, 0xfc, 0x61, 0x41, 0x31, 0x1e, 0x09, 0xf4,
0x00, 0x32, 0xa6, 0xaa, 0x75, 0xbb, 0x29, 0x6c, 0x97, 0xc2, 0x72, 0xea, 0x69, 0x21, 0x0e, 0x41,
0xd5, 0x9d, 0xe2, 0xb5, 0x4b, 0x7d, 0x27, 0xa1, 0xc3, 0x53, 0x8a, 0x49, 0xdb, 0x3e, 0x7a, 0x02,
0x45, 0xa9, 0x4e, 0x95, 0xae, 0x37, 0xa4, 0x9e, 0x70, 0x92, 0x61, 0x63, 0x98, 0x35, 0xc1, 0x9e,
0x46, 0x77, 0x14, 0x88, 0x0b, 0x72, 0xbe, 0x40, 0xff, 0x85, 0xc2, 0x8c, 0x6c, 0xea, 0xeb, 0x9e,
0x94, 0xc4, 0x10, 0x89, 0xda, 0xfe, 0xc6, 0x8f, 0x70, 0xe7, 0x6f, 0x33, 0x1a, 0xd9, 0x90, 0xbc,
0x20, 0x53, 0x7d, 0x85, 0x3c, 0x56, 0x9f, 0xe8, 0x11, 0xa4, 0x27, 0xde, 0x70, 0x4c, 0xb4, 0x9f,
0xf3, 0x2e, 0xb1, 0x4b, 0x83, 0xd9, 0x5e, 0x6c, 0x34, 0xbe, 0x4c, 0x3c, 0xb1, 0x36, 0x76, 0xa1,
0x7a, 0x5d, 0x52, 0x5f, 0x63, 0xb8, 0x1a, 0x37, 0x9c, 0x8f, 0xd9, 0x78, 0x9e, 0xca, 0x25, 0xed,
0x54, 0xfd, 0x77, 0x0b, 0xca, 0x8b, 0xf4, 0xa3, 0x8f, 0x61, 0x6d, 0x39, 0x61, 0xdc, 0x81, 0xa4,
0x7e, 0x68, 0x16, 0x2d, 0x66, 0xc7, 0x33, 0x49, 0x7d, 0xf4, 0x05, 0x38, 0xaf, 0x6d, 0x91, 0xf4,
0x92, 0xb0, 0xb1, 0xd4, 0x07, 0x5b, 0x78, 0x6d, 0x71, 0x57, 0xcf, 0x80, 0x2a, 0x99, 0xc3, 0x42,
0x50, 0xb3, 0xa4, 0x7f, 0xa1, 0x0f, 0x32, 0x44, 0xe4, 0xf0, 0x4a, 0x08, 0xf5, 0x14, 0xa2, 0xce,
0x11, 0xf5, 0xdf, 0x12, 0x50, 0x0e, 0x1b, 0x36, 0x26, 0x2f, 0xc7, 0x44, 0x48, 0xf4, 0x7f, 0xc8,
0xf7, 0xbd, 0xe1, 0x90, 0x70, 0x37, 0x74, 0xb1, 0xb0, 0x5d, 0xd9, 0x34, 0x63, 0xab, 0xa9, 0xe5,
0xed, 0x3d, 0x9c, 0x33, 0x1a, 0x6d, 0x1f, 0x3d, 0x82, 0x6c, 0x54, 0x79, 0x89, 0x99, 0x6e, 0xbc,
0xf2, 0x70, 0x84, 0xa3, 0x87, 0x90, 0xd6, 0x2c, 0x84, 0x69, 0xb1, 0x12, 0x71, 0xa2, 0x7a, 0x9c,
0x6e, 0xdf, 0xd8, 0xe0, 0xe8, 0x33, 0x08, 0x73, 0xc3, 0x95, 0xd3, 0x11, 0xd1, 0xc9, 0x50, 0xde,
0xae, 0x2e, 0x67, 0x51, 0x6f, 0x3a, 0x22, 0x18, 0xe4, 0xec, 0x5b, 0x25, 0xe9, 0x05, 0x99, 0x8a,
0x91, 0xd7, 0x27, 0xae, 0x1e, 0x78, 0x7a, 0x30, 0xe5, 0x71, 0x29, 0x92, 0xea, 0xcc, 0x8f, 0x0f,
0xae, 0xec, 0x4d, 0x06, 0xd7, 0xf3, 0x54, 0x2e, 0x6d, 0x67, 0xea, 0xbf, 0x58, 0x50, 0x99, 0x45,
0x4a, 0x8c, 0x58, 0x20, 0xd4, 0x89, 0x69, 0xc2, 0x39, 0xe3, 0x4b, 0x61, 0xc2, 0x87, 0xcd, 0x96,
0x12, 0x63, 0x83, 0xbe, 0x4d, 0x8c, 0x1e, 0x43, 0x86, 0x13, 0x31, 0x1e, 0xca, 0x30, 0x48, 0x28,
0x3e, 0xde, 0xb0, 0x46, 0x70, 0xa8, 0x51, 0x7f, 0x95, 0x80, 0xd5, 0xd0, 0xa3, 0x5d, 0x4f, 0xf6,
0xcf, 0x3f, 0x38, 0x81, 0xff, 0x83, 0xac, 0xf2, 0x86, 0x12, 0x95, 0x50, 0xc9, 0xeb, 0x29, 0x8c,
0x34, 0xde, 0x83, 0x44, 0x4f, 0x2c, 0xbc, 0x83, 0xd2, 0xe6, 0x1d, 0xe4, 0x89, 0xf8, 0x3b, 0xe8,
0x03, 0x71, 0x5d, 0xff, 0xd5, 0x82, 0xea, 0x62, 0x4c, 0x3f, 0x18, 0xd5, 0x1f, 0x41, 0xd6, 0x10,
0x19, 0x45, 0x73, 0x3d, 0xf4, 0xcd, 0xd0, 0x7c, 0x42, 0xe5, 0xb9, 0x31, 0x1d, 0xa9, 0xa9, 0x62,
0xad, 0x76, 0x25, 0x27, 0xde, 0xe5, 0x7b, 0x95, 0xec, 0xac, 0x0e, 0x13, 0x6f, 0x57, 0x87, 0xc9,
0x77, 0xae, 0xc3, 0xd4, 0x1b, 0xb8, 0x49, 0xdf, 0xe8, 0x01, 0x19, 0x8b, 0x6d, 0xe6, 0x9f, 0x63,
0x5b, 0x6f, 0xc2, 0xda, 0x52, 0xa0, 0x42, 0x1a, 0xe7, 0xf5, 0x65, 0xbd, 0xb1, 0xbe, 0x7e, 0x82,
0x3b, 0x98, 0x08, 0x36, 0x9c, 0x90, 0x58, 0xe6, 0xbd, 0x5b, 0xc8, 0x11, 0xa4, 0x7c, 0x19, 0x4e,
0xcd, 0x3c, 0xd6, 0xdf, 0xf5, 0xbb, 0xb0, 0x71, 0x9d, 0x79, 0xe3, 0x68, 0xfd, 0x4f, 0x0b, 0xca,
0xc7, 0xe6, 0x0e, 0xef, 0x76, 0xe4, 0x12, 0x79, 0x89, 0x1b, 0x92, 0xf7, 0x10, 0xd2, 0x13, 0x3d,
0x9c, 0xa2, 0x26, 0x1d, 0xfb, 0x7f, 0x73, 0xac, 0x66, 0x06, 0x36, 0xb8, 0x8a, 0xe4, 0x19, 0x1d,
0x4a, 0xc2, 0x35, 0xbb, 0x2a, 0x92, 0x31, 0xcd, 0xa7, 0x1a, 0xc1, 0xa1, 0x46, 0xfd, 0x6b, 0xa8,
0xcc, 0xee, 0x32, 0x27, 0x82, 0x4c, 0x88, 0x7a, 0xfc, 0x59, 0x3a, 0xf9, 0x17, 0xb6, 0x1f, 0xb7,
0x14, 0x84, 0x43, 0x8d, 0xc7, 0x7b, 0x50, 0x59, 0xfa, 0x67, 0x80, 0x2a, 0x50, 0x38, 0x7a, 0xd1,
0x3d, 0x6c, 0x35, 0xdb, 0x4f, 0xdb, 0xad, 0x3d, 0xfb, 0x16, 0x02, 0xc8, 0x74, 0xdb, 0x2f, 0x9e,
0xed, 0xb7, 0x6c, 0x0b, 0xe5, 0x21, 0x7d, 0x70, 0xb4, 0xdf, 0x6b, 0xdb, 0x09, 0xf5, 0xd9, 0x3b,
0xe9, 0x1c, 0x36, 0xed, 0xe4, 0xe3, 0xaf, 0xa0, 0xd0, 0xd4, 0xff, 0x6f, 0x3a, 0xdc, 0x27, 0x5c,
0x6d, 0x78, 0xd1, 0xc1, 0x07, 0x3b, 0xfb, 0xf6, 0x2d, 0x94, 0x85, 0xe4, 0x21, 0x56, 0x3b, 0x73,
0x90, 0x3a, 0xec, 0x74, 0x7b, 0x76, 0x02, 0x95, 0x01, 0x76, 0x8e, 0x7a, 0x9d, 0x66, 0xe7, 0xe0,
0xa0, 0xdd, 0xb3, 0x93, 0xbb, 0x9f, 0x43, 0x85, 0xb2, 0xcd, 0x09, 0x95, 0x44, 0x08, 0xf3, 0xf7,
0xed, 0x87, 0x7b, 0xe1, 0x8a, 0xb2, 0x2d, 0xf3, 0xb5, 0x35, 0x60, 0x5b, 0x13, 0xb9, 0xa5, 0xd1,
0x2d, 0x93, 0x9a, 0xa7, 0x19, 0xbd, 0xfa, 0xe4, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x86, 0x85,
0xad, 0x4f, 0x3e, 0x0e, 0x00, 0x00,
}

Просмотреть файл

@ -235,6 +235,7 @@ func (er *expressionRewriter) sysVarRewrite(cursor *Cursor, node *ColName) {
sysvars.Workload.Name,
sysvars.DDLStrategy.Name,
sysvars.SessionUUID.Name,
sysvars.SessionEnableSystemSettings.Name,
sysvars.ReadAfterWriteGTID.Name,
sysvars.ReadAfterWriteTimeOut.Name,
sysvars.VitessVersion.Name,

Просмотреть файл

@ -29,7 +29,7 @@ import (
type myTestCase struct {
in, expected string
liid, db, foundRows, rowCount, rawGTID, rawTimeout, sessTrackGTID bool
ddlStrategy, sessionUUID bool
ddlStrategy, sessionUUID, sessionEnableSystemSettings bool
udv int
autocommit, clientFoundRows, skipQueryPlanCache bool
sqlSelectLimit, transactionMode, workload, vitessVersion bool
@ -44,6 +44,10 @@ func TestRewrites(in *testing.T) {
in: "SELECT @@vitess_version",
expected: "SELECT :__vtvitess_version as `@@vitess_version`",
vitessVersion: true,
}, {
in: "SELECT @@enable_system_settings",
expected: "SELECT :__vtenable_system_settings as `@@enable_system_settings`",
sessionEnableSystemSettings: true,
}, {
in: "SELECT last_insert_id()",
expected: "SELECT :__lastInsertId as `last_insert_id()`",
@ -199,6 +203,7 @@ func TestRewrites(in *testing.T) {
assert.Equal(tc.workload, result.NeedsSysVar(sysvars.Workload.Name), "should need :__vtworkload")
assert.Equal(tc.ddlStrategy, result.NeedsSysVar(sysvars.DDLStrategy.Name), "should need ddlStrategy")
assert.Equal(tc.sessionUUID, result.NeedsSysVar(sysvars.SessionUUID.Name), "should need sessionUUID")
assert.Equal(tc.sessionEnableSystemSettings, result.NeedsSysVar(sysvars.SessionEnableSystemSettings.Name), "should need sessionEnableSystemSettings")
assert.Equal(tc.rawGTID, result.NeedsSysVar(sysvars.ReadAfterWriteGTID.Name), "should need rawGTID")
assert.Equal(tc.rawTimeout, result.NeedsSysVar(sysvars.ReadAfterWriteTimeOut.Name), "should need rawTimeout")
assert.Equal(tc.sessTrackGTID, result.NeedsSysVar(sysvars.SessionTrackGTIDs.Name), "should need sessTrackGTID")

Просмотреть файл

@ -43,17 +43,18 @@ var (
off = "0"
utf8 = "'utf8'"
Autocommit = SystemVariable{Name: "autocommit", IsBoolean: true, Default: on}
ClientFoundRows = SystemVariable{Name: "client_found_rows", IsBoolean: true, Default: off}
SkipQueryPlanCache = SystemVariable{Name: "skip_query_plan_cache", IsBoolean: true, Default: off}
TxReadOnly = SystemVariable{Name: "tx_read_only", IsBoolean: true, Default: off}
TransactionReadOnly = SystemVariable{Name: "transaction_read_only", IsBoolean: true, Default: off}
SQLSelectLimit = SystemVariable{Name: "sql_select_limit", Default: off}
TransactionMode = SystemVariable{Name: "transaction_mode", IdentifierAsString: true}
Workload = SystemVariable{Name: "workload", IdentifierAsString: true}
Charset = SystemVariable{Name: "charset", Default: utf8, IdentifierAsString: true}
Names = SystemVariable{Name: "names", Default: utf8, IdentifierAsString: true}
SessionUUID = SystemVariable{Name: "session_uuid", IdentifierAsString: true}
Autocommit = SystemVariable{Name: "autocommit", IsBoolean: true, Default: on}
ClientFoundRows = SystemVariable{Name: "client_found_rows", IsBoolean: true, Default: off}
SkipQueryPlanCache = SystemVariable{Name: "skip_query_plan_cache", IsBoolean: true, Default: off}
TxReadOnly = SystemVariable{Name: "tx_read_only", IsBoolean: true, Default: off}
TransactionReadOnly = SystemVariable{Name: "transaction_read_only", IsBoolean: true, Default: off}
SQLSelectLimit = SystemVariable{Name: "sql_select_limit", Default: off}
TransactionMode = SystemVariable{Name: "transaction_mode", IdentifierAsString: true}
Workload = SystemVariable{Name: "workload", IdentifierAsString: true}
Charset = SystemVariable{Name: "charset", Default: utf8, IdentifierAsString: true}
Names = SystemVariable{Name: "names", Default: utf8, IdentifierAsString: true}
SessionUUID = SystemVariable{Name: "session_uuid", IdentifierAsString: true}
SessionEnableSystemSettings = SystemVariable{Name: "enable_system_settings", IsBoolean: true, Default: on}
// Online DDL
DDLStrategy = SystemVariable{Name: "ddl_strategy", IdentifierAsString: true}
VitessVersion = SystemVariable{Name: "vitess_version", IdentifierAsString: true}
@ -76,6 +77,7 @@ var (
Charset,
Names,
SessionUUID,
SessionEnableSystemSettings,
ReadAfterWriteGTID,
ReadAfterWriteTimeOut,
SessionTrackGTIDs,

Просмотреть файл

@ -73,6 +73,14 @@ func (t noopVCursor) SetReadAfterWriteGTID(s string) {
panic("implement me")
}
func (t noopVCursor) SetSessionEnableSystemSettings(allow bool) error {
panic("implement me")
}
func (t noopVCursor) GetSessionEnableSystemSettings() bool {
panic("implement me")
}
func (t noopVCursor) SetReadAfterWriteTimeout(f float64) {
panic("implement me")
}

Просмотреть файл

@ -134,6 +134,9 @@ type (
GetSessionUUID() string
SetSessionEnableSystemSettings(bool) error
GetSessionEnableSystemSettings() bool
// SetReadAfterWriteGTID sets the GTID that the user expects a replica to have caught up with before answering a query
SetReadAfterWriteGTID(string)
SetReadAfterWriteTimeout(float64)

Просмотреть файл

@ -408,6 +408,8 @@ func (svss *SysVarSetAware) Execute(vcursor VCursor, env evalengine.ExpressionEn
return vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "invalid DDL strategy: %s", str)
}
vcursor.Session().SetDDLStrategy(str)
case sysvars.SessionEnableSystemSettings.Name:
err = svss.setBoolSysVar(env, vcursor.Session().SetSessionEnableSystemSettings)
case sysvars.Charset.Name, sysvars.Names.Name:
str, err := svss.evalAsString(env)
if err != nil {

Просмотреть файл

@ -297,6 +297,8 @@ func (e *Executor) addNeededBindVars(bindVarNeeds *sqlparser.BindVarNeeds, bindV
bindVars[key] = sqltypes.StringBindVariable(session.DDLStrategy)
case sysvars.SessionUUID.Name:
bindVars[key] = sqltypes.StringBindVariable(session.SessionUUID)
case sysvars.SessionEnableSystemSettings.Name:
bindVars[key] = sqltypes.BoolBindVariable(session.EnableSystemSettings)
case sysvars.ReadAfterWriteGTID.Name:
var v string
ifReadAfterWriteExist(session, func(raw *vtgatepb.ReadAfterWrite) {

Просмотреть файл

@ -327,7 +327,7 @@ func TestSelectSystemVariables(t *testing.T) {
logChan := QueryLogger.Subscribe("Test")
defer QueryLogger.Unsubscribe(logChan)
sql := "select @@autocommit, @@client_found_rows, @@skip_query_plan_cache, " +
sql := "select @@autocommit, @@client_found_rows, @@skip_query_plan_cache, @@enable_system_settings, " +
"@@sql_select_limit, @@transaction_mode, @@workload, @@read_after_write_gtid, " +
"@@read_after_write_timeout, @@session_track_gtids, @@ddl_strategy"
@ -337,6 +337,7 @@ func TestSelectSystemVariables(t *testing.T) {
{Name: "@@autocommit", Type: sqltypes.Int32},
{Name: "@@client_found_rows", Type: sqltypes.Int32},
{Name: "@@skip_query_plan_cache", Type: sqltypes.Int32},
{Name: "@@enable_system_settings", Type: sqltypes.Int32},
{Name: "@@sql_select_limit", Type: sqltypes.Int64},
{Name: "@@transaction_mode", Type: sqltypes.VarBinary},
{Name: "@@workload", Type: sqltypes.VarBinary},
@ -351,6 +352,7 @@ func TestSelectSystemVariables(t *testing.T) {
sqltypes.NULL,
sqltypes.NULL,
sqltypes.NULL,
sqltypes.NULL,
sqltypes.NewInt64(0),
sqltypes.NewVarBinary("UNSPECIFIED"),
sqltypes.NewVarBinary(""),

Просмотреть файл

@ -228,6 +228,24 @@ func TestExecutorSet(t *testing.T) {
}, {
in: "set session transaction read write",
out: &vtgatepb.Session{Autocommit: true},
}, {
in: "set @@enable_system_settings = on",
out: &vtgatepb.Session{Autocommit: true, EnableSystemSettings: true},
}, {
in: "set @@enable_system_settings = off",
out: &vtgatepb.Session{Autocommit: true, EnableSystemSettings: false},
}, {
in: "set @@enable_system_settings = 1",
out: &vtgatepb.Session{Autocommit: true, EnableSystemSettings: true},
}, {
in: "set @@enable_system_settings = 0",
out: &vtgatepb.Session{Autocommit: true, EnableSystemSettings: false},
}, {
in: "set @@enable_system_settings = true",
out: &vtgatepb.Session{Autocommit: true, EnableSystemSettings: true},
}, {
in: "set @@enable_system_settings = false",
out: &vtgatepb.Session{Autocommit: true, EnableSystemSettings: false},
}}
for i, tcase := range testcases {
t.Run(fmt.Sprintf("%d-%s", i, tcase.in), func(t *testing.T) {
@ -247,76 +265,91 @@ func TestExecutorSetOp(t *testing.T) {
executor, _, _, sbclookup := createLegacyExecutorEnv()
*sysVarSetEnabled = true
sbclookup.SetResults([]*sqltypes.Result{
sqltypes.MakeTestResult(sqltypes.MakeTestFields("sql_mode", "varchar"), "STRICT_ALL_TABLES,NO_AUTO_UPDATES"),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("sql_safe_updates", "int64"), "1"),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("tx_isolation", "varchar"), "read-committed"),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("sql_quote_show_create", "int64"), "0"),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("foreign_key_checks", "int64")),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("unique_checks", "int64"), "0"),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("net_write_timeout", "int64"), "600"),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("net_read_timeout", "int64"), "300"),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("character_set_client", "varchar"), "utf8"),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("character_set_results", "varchar")),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("character_set_results", "varchar")),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("character_set_results", "varchar")),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("character_set_results", "varchar")),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("character_set_results", "varchar")),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("character_set_results", "varchar")),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("client_found_rows", "int64")),
sqltypes.MakeTestResult(sqltypes.MakeTestFields("client_found_rows", "int64")),
})
returnResult := func(columnName, typ, value string) *sqltypes.Result {
return sqltypes.MakeTestResult(sqltypes.MakeTestFields(columnName, typ), value)
}
returnNoResult := func(columnName, typ string) *sqltypes.Result {
return sqltypes.MakeTestResult(sqltypes.MakeTestFields(columnName, typ))
}
testcases := []struct {
in string
warning []*querypb.QueryWarning
sysVars map[string]string
in string
warning []*querypb.QueryWarning
sysVars map[string]string
disallowResConn bool
result *sqltypes.Result
}{{
in: "set big_tables = 1", //ignore
}, {
in: "set sql_mode = 'STRICT_ALL_TABLES,NO_AUTO_UPDATES'",
sysVars: map[string]string{"sql_mode": "'STRICT_ALL_TABLES,NO_AUTO_UPDATES'"},
result: returnResult("sql_mode", "varchar", "STRICT_ALL_TABLES,NO_AUTO_UPDATES"),
}, {
// even though the tablet is saying that the value has changed,
// useReservedConn is false, so we won't allow this change
in: "set sql_mode = 'STRICT_ALL_TABLES,NO_AUTO_UPDATES'",
result: returnResult("sql_mode", "varchar", "STRICT_ALL_TABLES,NO_AUTO_UPDATES"),
sysVars: nil,
disallowResConn: true,
}, {
in: "set sql_safe_updates = 1",
sysVars: map[string]string{"sql_safe_updates": "1"},
result: returnResult("sql_safe_updates", "int64", "1"),
}, {
in: "set tx_isolation = 'read-committed'",
sysVars: map[string]string{"tx_isolation": "'read-committed'"},
result: returnResult("tx_isolation", "varchar", "read-committed"),
}, {
in: "set sql_quote_show_create = 0",
sysVars: map[string]string{"sql_quote_show_create": "0"},
result: returnResult("sql_quote_show_create", "int64", "0"),
}, {
in: "set foreign_key_checks = 1",
in: "set foreign_key_checks = 1",
result: returnNoResult("foreign_key_checks", "int64"),
}, {
in: "set unique_checks = 0",
sysVars: map[string]string{"unique_checks": "0"},
result: returnResult("unique_checks", "int64", "0"),
}, {
in: "set net_write_timeout = 600",
in: "set net_write_timeout = 600",
result: returnResult("net_write_timeout", "int64", "600"),
}, {
in: "set net_read_timeout = 600",
in: "set net_read_timeout = 600",
result: returnResult("net_read_timeout", "int64", "300"),
}, {
in: "set character_set_client = utf8",
in: "set character_set_client = utf8",
result: returnResult("character_set_client", "varchar", "utf8"),
}, {
in: "set character_set_results=null",
in: "set character_set_results=null",
result: returnNoResult("character_set_results", "varchar"),
}, {
in: "set character_set_results='binary'",
in: "set character_set_results='binary'",
result: returnNoResult("character_set_results", "varchar"),
}, {
in: "set character_set_results='utf8'",
in: "set character_set_results='utf8'",
result: returnNoResult("character_set_results", "varchar"),
}, {
in: "set character_set_results=utf8mb4",
in: "set character_set_results=utf8mb4",
result: returnNoResult("character_set_results", "varchar"),
}, {
in: "set character_set_results='latin1'",
in: "set character_set_results='latin1'",
result: returnNoResult("character_set_results", "varchar"),
}, {
in: "set character_set_results='abcd'",
in: "set character_set_results='abcd'",
result: returnNoResult("character_set_results", "varchar"),
}, {
in: "set @@global.client_found_rows = 1",
in: "set @@global.client_found_rows = 1",
result: returnNoResult("client_found_rows", "int64"),
}, {
in: "set global client_found_rows = 1",
in: "set global client_found_rows = 1",
result: returnNoResult("client_found_rows", "int64"),
}}
for _, tcase := range testcases {
t.Run(tcase.in, func(t *testing.T) {
session := NewAutocommitSession(masterSession)
session.TargetString = KsTestUnsharded
session.EnableSystemSettings = !tcase.disallowResConn
sbclookup.SetResults([]*sqltypes.Result{tcase.result})
_, err := executor.Execute(
context.Background(),
"TestExecute",

Просмотреть файл

@ -342,9 +342,10 @@ func (vh *vtgateHandler) session(c *mysql.Conn) *vtgatepb.Session {
IncludedFields: querypb.ExecuteOptions_ALL,
Workload: querypb.ExecuteOptions_Workload(mysqlDefaultWorkload),
},
Autocommit: true,
DDLStrategy: *defaultDDLStrategy,
SessionUUID: u.String(),
Autocommit: true,
DDLStrategy: *defaultDDLStrategy,
SessionUUID: u.String(),
EnableSystemSettings: *sysVarSetEnabled,
}
if c.Capabilities&mysql.CapabilityClientFoundRows != 0 {
session.Options.ClientFoundRows = true

Просмотреть файл

@ -478,6 +478,20 @@ func (session *SafeSession) GetSessionUUID() string {
return session.SessionUUID
}
// SetSessionEnableSystemSettings set the SessionEnableSystemSettings setting.
func (session *SafeSession) SetSessionEnableSystemSettings(allow bool) {
session.mu.Lock()
defer session.mu.Unlock()
session.EnableSystemSettings = allow
}
// GetSessionEnableSystemSettings returns the SessionEnableSystemSettings value.
func (session *SafeSession) GetSessionEnableSystemSettings() bool {
session.mu.Lock()
defer session.mu.Unlock()
return session.EnableSystemSettings
}
// SetReadAfterWriteGTID set the ReadAfterWriteGtid setting.
func (session *SafeSession) SetReadAfterWriteGTID(vtgtid string) {
session.mu.Lock()

Просмотреть файл

@ -329,7 +329,7 @@ func (vc *vcursorImpl) FirstSortedKeyspace() (*vindexes.Keyspace, error) {
// SysVarSetEnabled implements the ContextVSchema interface
func (vc *vcursorImpl) SysVarSetEnabled() bool {
return *sysVarSetEnabled
return vc.GetSessionEnableSystemSettings()
}
// KeyspaceExists provides whether the keyspace exists or not.
@ -661,6 +661,17 @@ func (vc *vcursorImpl) GetSessionUUID() string {
return vc.safeSession.GetSessionUUID()
}
// SetSessionEnableSystemSettings implements the SessionActions interface
func (vc *vcursorImpl) SetSessionEnableSystemSettings(allow bool) error {
vc.safeSession.SetSessionEnableSystemSettings(allow)
return nil
}
// GetSessionEnableSystemSettings implements the SessionActions interface
func (vc *vcursorImpl) GetSessionEnableSystemSettings() bool {
return vc.safeSession.GetSessionEnableSystemSettings()
}
// SetReadAfterWriteGTID implements the SessionActions interface
func (vc *vcursorImpl) SetReadAfterWriteGTID(vtgtid string) {
vc.safeSession.SetReadAfterWriteGTID(vtgtid)

Просмотреть файл

@ -143,6 +143,9 @@ message Session {
// Session UUID
string SessionUUID = 22;
// enable_system_settings defines if we can use reserved connections.
bool enable_system_settings = 23;
}
// ReadAfterWrite contains information regarding gtid set and timeout