Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
504ab8d4
Commit
504ab8d4
authored
Mar 30, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
merge
sql/sql_parse.cc: Auto merged
parents
dddabc7e
5ac4670b
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
98 additions
and
35 deletions
+98
-35
include/violite.h
include/violite.h
+2
-2
mysql-test/r/ctype_cp1251.result
mysql-test/r/ctype_cp1251.result
+2
-2
mysql-test/r/group_by.result
mysql-test/r/group_by.result
+25
-0
mysql-test/t/ctype_cp1251-master.opt
mysql-test/t/ctype_cp1251-master.opt
+0
-2
mysql-test/t/ctype_cp1251.test
mysql-test/t/ctype_cp1251.test
+2
-2
mysql-test/t/group_by.test
mysql-test/t/group_by.test
+25
-0
sql/sql_parse.cc
sql/sql_parse.cc
+5
-6
sql/sql_select.cc
sql/sql_select.cc
+29
-15
sql/table.h
sql/table.h
+3
-1
strings/my_strtoll10-x86.s
strings/my_strtoll10-x86.s
+1
-1
vio/test-ssl.c
vio/test-ssl.c
+2
-2
vio/test-sslclient.c
vio/test-sslclient.c
+2
-2
No files found.
include/violite.h
View file @
504ab8d4
...
@@ -138,8 +138,8 @@ int vio_close_shared_memory(Vio * vio);
...
@@ -138,8 +138,8 @@ int vio_close_shared_memory(Vio * vio);
#if defined(HAVE_VIO) && !defined(DONT_MAP_VIO)
#if defined(HAVE_VIO) && !defined(DONT_MAP_VIO)
#define vio_delete(vio) (vio)->viodelete(vio)
#define vio_delete(vio) (vio)->viodelete(vio)
#define vio_errno(vio) (vio)->vioerrno(vio)
#define vio_errno(vio) (vio)->vioerrno(vio)
#define vio_read(vio, buf, size)
(vio)->read
(vio,buf,size)
#define vio_read(vio, buf, size)
((vio)->read)
(vio,buf,size)
#define vio_write(vio, buf, size)
(vio)->write
(vio, buf, size)
#define vio_write(vio, buf, size)
((vio)->write)
(vio, buf, size)
#define vio_blocking(vio, set_blocking_mode, old_mode)\
#define vio_blocking(vio, set_blocking_mode, old_mode)\
(vio)->vioblocking(vio, set_blocking_mode, old_mode)
(vio)->vioblocking(vio, set_blocking_mode, old_mode)
#define vio_is_blocking(vio) (vio)->is_blocking(vio)
#define vio_is_blocking(vio) (vio)->is_blocking(vio)
...
...
mysql-test/r/ctype_cp1251.result
View file @
504ab8d4
drop table if exists t1;
drop table if exists t1;
SET NAMES cp1251;
SET NAMES cp1251;
create table t1 (a varchar(10) not null);
create table t1 (a varchar(10) not null)
character set cp1251
;
insert into t1 values ("a"),("ab"),("abc");
insert into t1 values ("a"),("ab"),("abc");
select * from t1;
select * from t1;
a
a
...
@@ -23,7 +23,7 @@ a
...
@@ -23,7 +23,7 @@ a
b
b
c
c
drop table t1;
drop table t1;
create table t1 (a char(15) binary, b binary(15));
create table t1 (a char(15) binary, b binary(15))
character set cp1251
;
insert into t1 values ('aaa','bbb'),('AAA','BBB');
insert into t1 values ('aaa','bbb'),('AAA','BBB');
select upper(a),upper(b) from t1;
select upper(a),upper(b) from t1;
upper(a) upper(b)
upper(a) upper(b)
...
...
mysql-test/r/group_by.result
View file @
504ab8d4
...
@@ -677,3 +677,28 @@ select sum(a)*sum(b) as d from t1 where a=1 group by c having d > 0;
...
@@ -677,3 +677,28 @@ select sum(a)*sum(b) as d from t1 where a=1 group by c having d > 0;
d
d
10
10
drop table t1;
drop table t1;
create table t1(a int);
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(8),(9);
create table t2 (
a int,
b varchar(200) NOT NULL,
c varchar(50) NOT NULL,
d varchar(100) NOT NULL,
primary key (a,b(132),c,d),
key a (a,b)
) charset=utf8;
insert into t2 select
x3.a, -- 3
concat('val-', x3.a + 3*x4.a), -- 12
concat('val-', @a:=x3.a + 3*x4.a + 12*C.a), -- 120
concat('val-', @a + 120*D.a)
from t1 x3, t1 x4, t1 C, t1 D where x3.a < 3 and x4.a < 4 and D.a < 4;
delete from t2 where a = 2 and b = 'val-2' limit 30;
explain select c from t2 where a = 2 and b = 'val-2' group by c;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ref PRIMARY,a PRIMARY 400 const,const 6 Using where
select c from t2 where a = 2 and b = 'val-2' group by c;
c
val-74
val-98
drop table t1,t2;
mysql-test/t/ctype_cp1251-master.opt
deleted
100644 → 0
View file @
dddabc7e
--default-character-set=cp1251 --new
mysql-test/t/ctype_cp1251.test
View file @
504ab8d4
...
@@ -10,7 +10,7 @@ SET NAMES cp1251;
...
@@ -10,7 +10,7 @@ SET NAMES cp1251;
# Test problem with LEFT() (Bug #514)
# Test problem with LEFT() (Bug #514)
#
#
create
table
t1
(
a
varchar
(
10
)
not
null
);
create
table
t1
(
a
varchar
(
10
)
not
null
)
character
set
cp1251
;
insert
into
t1
values
(
"a"
),(
"ab"
),(
"abc"
);
insert
into
t1
values
(
"a"
),(
"ab"
),(
"abc"
);
select
*
from
t1
;
select
*
from
t1
;
select
a
,
left
(
a
,
1
)
as
b
from
t1
;
select
a
,
left
(
a
,
1
)
as
b
from
t1
;
...
@@ -21,7 +21,7 @@ drop table t1;
...
@@ -21,7 +21,7 @@ drop table t1;
#
#
# Test of binary and upper/lower
# Test of binary and upper/lower
#
#
create
table
t1
(
a
char
(
15
)
binary
,
b
binary
(
15
));
create
table
t1
(
a
char
(
15
)
binary
,
b
binary
(
15
))
character
set
cp1251
;
insert
into
t1
values
(
'aaa'
,
'bbb'
),(
'AAA'
,
'BBB'
);
insert
into
t1
values
(
'aaa'
,
'bbb'
),(
'AAA'
,
'BBB'
);
select
upper
(
a
),
upper
(
b
)
from
t1
;
select
upper
(
a
),
upper
(
b
)
from
t1
;
select
lower
(
a
),
lower
(
b
)
from
t1
;
select
lower
(
a
),
lower
(
b
)
from
t1
;
...
...
mysql-test/t/group_by.test
View file @
504ab8d4
...
@@ -489,3 +489,28 @@ select a,sum(b) from t1 where a=1 group by c having a=1;
...
@@ -489,3 +489,28 @@ select a,sum(b) from t1 where a=1 group by c having a=1;
select
a
as
d
,
sum
(
b
)
from
t1
where
a
=
1
group
by
c
having
d
=
1
;
select
a
as
d
,
sum
(
b
)
from
t1
where
a
=
1
group
by
c
having
d
=
1
;
select
sum
(
a
)
*
sum
(
b
)
as
d
from
t1
where
a
=
1
group
by
c
having
d
>
0
;
select
sum
(
a
)
*
sum
(
b
)
as
d
from
t1
where
a
=
1
group
by
c
having
d
>
0
;
drop
table
t1
;
drop
table
t1
;
# Test for BUG#9213 GROUP BY query on utf-8 key returns wrong results
create
table
t1
(
a
int
);
insert
into
t1
values
(
0
),(
1
),(
2
),(
3
),(
4
),(
5
),(
6
),(
8
),(
9
);
create
table
t2
(
a
int
,
b
varchar
(
200
)
NOT
NULL
,
c
varchar
(
50
)
NOT
NULL
,
d
varchar
(
100
)
NOT
NULL
,
primary
key
(
a
,
b
(
132
),
c
,
d
),
key
a
(
a
,
b
)
)
charset
=
utf8
;
insert
into
t2
select
x3
.
a
,
--
3
concat
(
'val-'
,
x3
.
a
+
3
*
x4
.
a
),
--
12
concat
(
'val-'
,
@
a
:=
x3
.
a
+
3
*
x4
.
a
+
12
*
C
.
a
),
--
120
concat
(
'val-'
,
@
a
+
120
*
D
.
a
)
from
t1
x3
,
t1
x4
,
t1
C
,
t1
D
where
x3
.
a
<
3
and
x4
.
a
<
4
and
D
.
a
<
4
;
delete
from
t2
where
a
=
2
and
b
=
'val-2'
limit
30
;
explain
select
c
from
t2
where
a
=
2
and
b
=
'val-2'
group
by
c
;
select
c
from
t2
where
a
=
2
and
b
=
'val-2'
group
by
c
;
drop
table
t1
,
t2
;
sql/sql_parse.cc
View file @
504ab8d4
...
@@ -3731,6 +3731,7 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
...
@@ -3731,6 +3731,7 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
db
?
db
:
""
,
want_access
,
thd
->
master_access
));
db
?
db
:
""
,
want_access
,
thd
->
master_access
));
#ifndef NO_EMBEDDED_ACCESS_CHECKS
#ifndef NO_EMBEDDED_ACCESS_CHECKS
ulong
db_access
;
ulong
db_access
;
bool
db_is_pattern
=
test
(
want_access
&
GRANT_ACL
);
#endif
#endif
ulong
dummy
;
ulong
dummy
;
if
(
save_priv
)
if
(
save_priv
)
...
@@ -3757,9 +3758,8 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
...
@@ -3757,9 +3758,8 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
*/
*/
db_access
=
thd
->
db_access
;
db_access
=
thd
->
db_access
;
if
(
!
(
thd
->
master_access
&
SELECT_ACL
)
&&
if
(
!
(
thd
->
master_access
&
SELECT_ACL
)
&&
(
db
&&
(
!
thd
->
db
||
strcmp
(
db
,
thd
->
db
))))
(
db
&&
(
!
thd
->
db
||
db_is_pattern
||
strcmp
(
db
,
thd
->
db
))))
db_access
=
acl_get
(
thd
->
host
,
thd
->
ip
,
db_access
=
acl_get
(
thd
->
host
,
thd
->
ip
,
thd
->
priv_user
,
db
,
db_is_pattern
);
thd
->
priv_user
,
db
,
test
(
want_access
&
GRANT_ACL
));
*
save_priv
=
thd
->
master_access
|
db_access
;
*
save_priv
=
thd
->
master_access
|
db_access
;
DBUG_RETURN
(
FALSE
);
DBUG_RETURN
(
FALSE
);
}
}
...
@@ -3777,9 +3777,8 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
...
@@ -3777,9 +3777,8 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
if
(
db
==
any_db
)
if
(
db
==
any_db
)
DBUG_RETURN
(
FALSE
);
// Allow select on anything
DBUG_RETURN
(
FALSE
);
// Allow select on anything
if
(
db
&&
(
!
thd
->
db
||
strcmp
(
db
,
thd
->
db
)))
if
(
db
&&
(
!
thd
->
db
||
db_is_pattern
||
strcmp
(
db
,
thd
->
db
)))
db_access
=
acl_get
(
thd
->
host
,
thd
->
ip
,
db_access
=
acl_get
(
thd
->
host
,
thd
->
ip
,
thd
->
priv_user
,
db
,
db_is_pattern
);
thd
->
priv_user
,
db
,
test
(
want_access
&
GRANT_ACL
));
else
else
db_access
=
thd
->
db_access
;
db_access
=
thd
->
db_access
;
DBUG_PRINT
(
"info"
,(
"db_access: %lu"
,
db_access
));
DBUG_PRINT
(
"info"
,(
"db_access: %lu"
,
db_access
));
...
...
sql/sql_select.cc
View file @
504ab8d4
...
@@ -4604,14 +4604,14 @@ const_expression_in_where(COND *cond, Item *comp_item, Item **const_item)
...
@@ -4604,14 +4604,14 @@ const_expression_in_where(COND *cond, Item *comp_item, Item **const_item)
create_tmp_field_from_field()
create_tmp_field_from_field()
thd Thread handler
thd Thread handler
org_field field from which new field will be created
org_field field from which new field will be created
name New field name
item Item to create a field for
item Item to create a field for
table Temporary table
table Temporary table
modify_item 1 if item->result_field should point to new item.
item !=NULL if item->result_field should point to new field.
This is relevent for how fill_record() is going to
This is relevant for how fill_record() is going to work:
work:
If item != NULL then fill_record() will update
If modify_item is 1 then fill_record() will update
the record in the original table.
the record in the original table.
If
modify_item is 0
then fill_record() will update
If
item == NULL
then fill_record() will update
the temporary table
the temporary table
convert_blob_length If >0 create a varstring(convert_blob_length) field
convert_blob_length If >0 create a varstring(convert_blob_length) field
instead of blob.
instead of blob.
...
@@ -4622,8 +4622,8 @@ const_expression_in_where(COND *cond, Item *comp_item, Item **const_item)
...
@@ -4622,8 +4622,8 @@ const_expression_in_where(COND *cond, Item *comp_item, Item **const_item)
*/
*/
static
Field
*
create_tmp_field_from_field
(
THD
*
thd
,
Field
*
org_field
,
static
Field
*
create_tmp_field_from_field
(
THD
*
thd
,
Field
*
org_field
,
Item
*
item
,
TABLE
*
table
,
const
char
*
name
,
TABLE
*
table
,
bool
modify_
item
,
Item_field
*
item
,
uint
convert_blob_length
)
uint
convert_blob_length
)
{
{
Field
*
new_field
;
Field
*
new_field
;
...
@@ -4636,10 +4636,10 @@ static Field* create_tmp_field_from_field(THD *thd, Field* org_field,
...
@@ -4636,10 +4636,10 @@ static Field* create_tmp_field_from_field(THD *thd, Field* org_field,
new_field
=
org_field
->
new_field
(
thd
->
mem_root
,
table
);
new_field
=
org_field
->
new_field
(
thd
->
mem_root
,
table
);
if
(
new_field
)
if
(
new_field
)
{
{
if
(
modify_
item
)
if
(
item
)
((
Item_field
*
)
item
)
->
result_field
=
new_field
;
item
->
result_field
=
new_field
;
else
else
new_field
->
field_name
=
item
->
name
;
new_field
->
field_name
=
name
;
if
(
org_field
->
maybe_null
())
if
(
org_field
->
maybe_null
())
new_field
->
flags
&=
~
NOT_NULL_FLAG
;
// Because of outer join
new_field
->
flags
&=
~
NOT_NULL_FLAG
;
// Because of outer join
if
(
org_field
->
type
()
==
FIELD_TYPE_VAR_STRING
)
if
(
org_field
->
type
()
==
FIELD_TYPE_VAR_STRING
)
...
@@ -4779,8 +4779,8 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
...
@@ -4779,8 +4779,8 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
if
(
item_sum
->
args
[
0
]
->
type
()
==
Item
::
FIELD_ITEM
)
if
(
item_sum
->
args
[
0
]
->
type
()
==
Item
::
FIELD_ITEM
)
{
{
*
from_field
=
((
Item_field
*
)
item_sum
->
args
[
0
])
->
field
;
*
from_field
=
((
Item_field
*
)
item_sum
->
args
[
0
])
->
field
;
return
create_tmp_field_from_field
(
thd
,
*
from_field
,
item
,
table
,
return
create_tmp_field_from_field
(
thd
,
*
from_field
,
item
->
name
,
table
,
modify_item
,
convert_blob_length
);
NULL
,
convert_blob_length
);
}
}
/* fall through */
/* fall through */
default:
default:
...
@@ -4818,8 +4818,10 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
...
@@ -4818,8 +4818,10 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
case
Item
:
:
DEFAULT_VALUE_ITEM
:
case
Item
:
:
DEFAULT_VALUE_ITEM
:
{
{
Item_field
*
field
=
(
Item_field
*
)
item
;
Item_field
*
field
=
(
Item_field
*
)
item
;
return
create_tmp_field_from_field
(
thd
,
(
*
from_field
=
field
->
field
),
item
,
return
create_tmp_field_from_field
(
thd
,
(
*
from_field
=
field
->
field
),
table
,
modify_item
,
convert_blob_length
);
item
->
name
,
table
,
modify_item
?
(
Item_field
*
)
item
:
NULL
,
convert_blob_length
);
}
}
case
Item
:
:
FUNC_ITEM
:
case
Item
:
:
FUNC_ITEM
:
case
Item
:
:
COND_ITEM
:
case
Item
:
:
COND_ITEM
:
...
@@ -7174,7 +7176,19 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
...
@@ -7174,7 +7176,19 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
/* Found key that can be used to retrieve data in sorted order */
/* Found key that can be used to retrieve data in sorted order */
if
(
tab
->
ref
.
key
>=
0
)
if
(
tab
->
ref
.
key
>=
0
)
{
{
tab
->
ref
.
key
=
new_ref_key
;
/*
We'll use ref access method on key new_ref_key. In general case
the index search tuple for new_ref_key will be different (e.g.
when one of the indexes only covers prefix of the field, see
BUG#9213 in group_by.test).
So we build tab->ref from scratch here.
*/
KEYUSE
*
keyuse
=
tab
->
keyuse
;
while
(
keyuse
->
key
!=
new_ref_key
&&
keyuse
->
table
==
tab
->
table
)
keyuse
++
;
if
(
create_ref_for_key
(
tab
->
join
,
tab
,
keyuse
,
tab
->
join
->
const_table_map
))
DBUG_RETURN
(
0
);
}
}
else
else
{
{
...
...
sql/table.h
View file @
504ab8d4
...
@@ -90,7 +90,9 @@ struct st_table {
...
@@ -90,7 +90,9 @@ struct st_table {
uint
null_fields
;
/* number of null fields */
uint
null_fields
;
/* number of null fields */
uint
blob_fields
;
/* number of blob fields */
uint
blob_fields
;
/* number of blob fields */
key_map
keys_in_use
,
keys_for_keyread
,
read_only_keys
;
key_map
keys_in_use
,
keys_for_keyread
,
read_only_keys
;
key_map
quick_keys
,
used_keys
,
keys_in_use_for_query
;
key_map
quick_keys
;
key_map
used_keys
;
/* keys that cover all used table fields */
key_map
keys_in_use_for_query
;
KEY
*
key_info
;
/* data of keys in database */
KEY
*
key_info
;
/* data of keys in database */
TYPELIB
keynames
;
/* Pointers to keynames */
TYPELIB
keynames
;
/* Pointers to keynames */
ha_rows
max_rows
;
/* create information */
ha_rows
max_rows
;
/* create information */
...
...
strings/my_strtoll10-x86.s
View file @
504ab8d4
...
@@ -394,7 +394,7 @@ my_strtoll10:
...
@@ -394,7 +394,7 @@ my_strtoll10:
popl
%
ebp
popl
%
ebp
ret
ret
my_strtoll10_end
:
.
my_strtoll10_end
:
.
size
my_strtoll10
,
.
my_strtoll10_end
-
my_strtoll10
.
size
my_strtoll10
,
.
my_strtoll10_end
-
my_strtoll10
.
comm
res
,
240
,
32
.
comm
res
,
240
,
32
.
comm
end_ptr
,
120
,
32
.
comm
end_ptr
,
120
,
32
...
...
vio/test-ssl.c
View file @
504ab8d4
...
@@ -115,7 +115,7 @@ main(int argc, char** argv)
...
@@ -115,7 +115,7 @@ main(int argc, char** argv)
{
{
/* child, therefore, client */
/* child, therefore, client */
char
xbuf
[
100
];
char
xbuf
[
100
];
int
r
=
client_vio
->
read
(
client_vio
,
xbuf
,
sizeof
(
xbuf
));
int
r
=
vio_
read
(
client_vio
,
xbuf
,
sizeof
(
xbuf
));
if
(
r
<=
0
)
{
if
(
r
<=
0
)
{
my_free
((
gptr
)
ssl_acceptor
,
MYF
(
0
));
my_free
((
gptr
)
ssl_acceptor
,
MYF
(
0
));
my_free
((
gptr
)
ssl_connector
,
MYF
(
0
));
my_free
((
gptr
)
ssl_connector
,
MYF
(
0
));
...
@@ -130,7 +130,7 @@ main(int argc, char** argv)
...
@@ -130,7 +130,7 @@ main(int argc, char** argv)
else
else
{
{
const
char
*
s
=
"Huhuhuh"
;
const
char
*
s
=
"Huhuhuh"
;
int
r
=
server_vio
->
write
(
server_vio
,(
gptr
)
s
,
strlen
(
s
));
int
r
=
vio_
write
(
server_vio
,(
gptr
)
s
,
strlen
(
s
));
if
(
r
<=
0
)
{
if
(
r
<=
0
)
{
my_free
((
gptr
)
ssl_acceptor
,
MYF
(
0
));
my_free
((
gptr
)
ssl_acceptor
,
MYF
(
0
));
my_free
((
gptr
)
ssl_connector
,
MYF
(
0
));
my_free
((
gptr
)
ssl_connector
,
MYF
(
0
));
...
...
vio/test-sslclient.c
View file @
504ab8d4
...
@@ -77,13 +77,13 @@ main( int argc __attribute__((unused)),
...
@@ -77,13 +77,13 @@ main( int argc __attribute__((unused)),
sa
.
sin_port
=
htons
(
1111
);
/* Server Port number */
sa
.
sin_port
=
htons
(
1111
);
/* Server Port number */
err
=
connect
(
client_vio
->
sd
,
(
struct
sockaddr
*
)
&
sa
,
err
=
connect
(
client_vio
->
sd
,
(
struct
sockaddr
*
)
&
sa
,
sizeof
(
sa
));
sizeof
(
sa
));
/* ----------------------------------------------- */
/* ----------------------------------------------- */
/* Now we have TCP conncetion. Start SSL negotiation. */
/* Now we have TCP conncetion. Start SSL negotiation. */
read
(
client_vio
->
sd
,
xbuf
,
sizeof
(
xbuf
));
read
(
client_vio
->
sd
,
xbuf
,
sizeof
(
xbuf
));
sslconnect
(
ssl_connector
,
client_vio
,
60L
);
sslconnect
(
ssl_connector
,
client_vio
,
60L
);
err
=
client_vio
->
read
(
client_vio
,
xbuf
,
sizeof
(
xbuf
));
err
=
vio_
read
(
client_vio
,
xbuf
,
sizeof
(
xbuf
));
if
(
err
<=
0
)
{
if
(
err
<=
0
)
{
my_free
((
gptr
)
ssl_connector
,
MYF
(
0
));
my_free
((
gptr
)
ssl_connector
,
MYF
(
0
));
fatal_error
(
"client:SSL_read"
);
fatal_error
(
"client:SSL_read"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment