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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
4971ce3e
Commit
4971ce3e
authored
Jun 01, 2004
by
tomas@mc05.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into mc05.(none):/space2/tomas/mysql-4.1-ndb-test
parents
308f40bb
53d05f4a
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
107 additions
and
42 deletions
+107
-42
acconfig.h
acconfig.h
+9
-0
configure.in
configure.in
+27
-2
include/my_global.h
include/my_global.h
+4
-2
innobase/os/os0file.c
innobase/os/os0file.c
+10
-16
libmysqld/Makefile.am
libmysqld/Makefile.am
+0
-1
libmysqld/libmysqld.def
libmysqld/libmysqld.def
+2
-1
myisam/mi_open.c
myisam/mi_open.c
+1
-0
mysql-test/include/have_geometry.inc
mysql-test/include/have_geometry.inc
+4
-0
mysql-test/r/func_gconcat.result
mysql-test/r/func_gconcat.result
+1
-1
mysql-test/r/have_geometry.require
mysql-test/r/have_geometry.require
+2
-0
mysql-test/t/func_gconcat.test
mysql-test/t/func_gconcat.test
+3
-3
mysql-test/t/gis-rtree.test
mysql-test/t/gis-rtree.test
+2
-0
mysql-test/t/gis.test
mysql-test/t/gis.test
+2
-0
sql/ha_myisam.cc
sql/ha_myisam.cc
+1
-3
sql/mysql_priv.h
sql/mysql_priv.h
+1
-0
sql/mysqld.cc
sql/mysqld.cc
+12
-1
sql/set_var.cc
sql/set_var.cc
+2
-0
sql/share/romanian/errmsg.txt
sql/share/romanian/errmsg.txt
+1
-1
sql/share/serbian/errmsg.txt
sql/share/serbian/errmsg.txt
+12
-0
sql/slave.cc
sql/slave.cc
+1
-1
sql/sql_class.cc
sql/sql_class.cc
+1
-1
sql/sql_class.h
sql/sql_class.h
+2
-0
sql/sql_insert.cc
sql/sql_insert.cc
+6
-3
sql/sql_show.cc
sql/sql_show.cc
+1
-6
No files found.
acconfig.h
View file @
4971ce3e
...
...
@@ -203,6 +203,15 @@
/* If we want to have query cache */
#undef HAVE_QUERY_CACHE
/* Spatial extentions */
#undef HAVE_SPATIAL
/* RTree keys */
#undef HAVE_RTREE_KEYS
/* Access checks in embedded library */
#undef HAVE_EMBEDDED_PRIVILEGE_CONTROL
/* Solaris define gethostbyaddr_r with 7 arguments. glibc2 defines
this with 8 arguments */
#undef HAVE_SOLARIS_STYLE_GETHOST
...
...
configure.in
View file @
4971ce3e
...
...
@@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_INIT
(
sql/mysqld.cc
)
AC_CANONICAL_SYSTEM
# The Docs Makefile.am parses this line!
AM_INIT_AUTOMAKE
(
mysql, 4.1.
2-alph
a
)
AM_INIT_AUTOMAKE
(
mysql, 4.1.
3-bet
a
)
AM_CONFIG_HEADER
(
config.h
)
PROTOCOL_VERSION
=
10
...
...
@@ -26,7 +26,7 @@ MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock"
AVAILABLE_LANGUAGES
=
"
\
czech danish dutch english estonian french german greek hungarian
\
italian japanese korean norwegian norwegian-ny polish portuguese
\
romanian russian slovak spanish swedish ukrainian"
romanian russian s
erbian s
lovak spanish swedish ukrainian"
# Generate make rules for all error messages
AVAILABLE_LANGUAGES_ERRORS
=
...
...
@@ -2136,6 +2136,31 @@ then
AC_DEFINE
(
HAVE_QUERY_CACHE
)
fi
AC_ARG_WITH
(
geometry,
[
--without-geometry
Do not build geometry-related parts.],
[
with_geometry
=
$withval
]
,
[
with_geometry
=
yes
]
)
if
test
"
$with_geometry
"
=
"yes"
then
AC_DEFINE
(
HAVE_SPATIAL
)
AC_DEFINE
(
HAVE_RTREE_KEYS
)
fi
AC_ARG_WITH
(
embedded_privilege_control,
[
--with-embedded-privilege-control
Build parts to check user
's privileges.
Only affects embedded library.],
[with_embedded_privilege_control=$withval],
[with_embedded_privilege_control=no]
)
if test "$with_embedded_privilege_control" = "yes"
then
AC_DEFINE(HAVE_EMBEDDED_PRIVILEGE_CONTROL)
fi
AC_ARG_WITH(extra-tools,
[ --without-extra-tools Skip building utilites in the tools directory.],
[with_tools=$withval],
...
...
include/my_global.h
View file @
4971ce3e
...
...
@@ -1194,6 +1194,8 @@ do { doubleget_union _tmp; \
#define MYSQL_UNIVERSAL_CLIENT_CHARSET MYSQL_DEFAULT_CHARSET_NAME
#endif
#define HAVE_SPATIAL
#define HAVE_RTREE_KEYS
#if defined(EMBEDDED_LIBRARY) && !defined(HAVE_EMBEDDED_PRIVILEGE_CONTROL)
#define NO_EMBEDDED_ACCESS_CHECKS
#endif
#endif
/* my_global_h */
innobase/os/os0file.c
View file @
4971ce3e
...
...
@@ -387,22 +387,19 @@ os_file_lock(
/*=========*/
/* out: 0 on success */
int
fd
,
/* in: file descriptor */
const
char
*
name
,
/* in: file name */
uint
lock_type
)
/* in: lock_type */
const
char
*
name
)
/* in: file name */
{
struct
flock
lk
;
lk
.
l_type
=
lock_type
;
lk
.
l_type
=
F_WRLCK
;
lk
.
l_whence
=
SEEK_SET
;
lk
.
l_start
=
lk
.
l_len
=
0
;
if
(
fcntl
(
fd
,
F_SETLK
,
&
lk
)
==
-
1
)
{
fprintf
(
stderr
,
"InnoDB: Unable to lock %s with lock %d, error: %d"
,
name
,
lock_type
,
errno
);
perror
(
": fcntl"
);
"InnoDB: Unable to lock %s, error: %d"
,
name
,
errno
);
close
(
fd
);
return
(
-
1
);
}
return
0
;
return
(
0
)
;
}
#endif
/* USE_FILE_LOCK */
...
...
@@ -869,7 +866,8 @@ os_file_create_simple(
goto
try_again
;
}
#ifdef USE_FILE_LOCK
}
else
if
(
os_file_lock
(
file
,
name
,
F_WRLCK
))
{
}
else
if
(
access_type
==
OS_FILE_READ_WRITE
&&
os_file_lock
(
file
,
name
))
{
*
success
=
FALSE
;
file
=
-
1
;
#endif
...
...
@@ -980,7 +978,8 @@ os_file_create_simple_no_error_handling(
if
(
file
==
-
1
)
{
*
success
=
FALSE
;
#ifdef USE_FILE_LOCK
}
else
if
(
os_file_lock
(
file
,
name
,
F_WRLCK
))
{
}
else
if
(
access_type
==
OS_FILE_READ_WRITE
&&
os_file_lock
(
file
,
name
))
{
*
success
=
FALSE
;
file
=
-
1
;
#endif
...
...
@@ -1194,7 +1193,8 @@ os_file_create(
goto
try_again
;
}
#ifdef USE_FILE_LOCK
}
else
if
(
os_file_lock
(
file
,
name
,
F_WRLCK
))
{
}
else
if
(
create_mode
!=
OS_FILE_OPEN_RAW
&&
os_file_lock
(
file
,
name
))
{
*
success
=
FALSE
;
file
=
-
1
;
#endif
...
...
@@ -1395,9 +1395,6 @@ os_file_close(
#else
int
ret
;
#ifdef USE_FILE_LOCK
(
void
)
os_file_lock
(
file
,
"unknown"
,
F_UNLCK
);
#endif
ret
=
close
(
file
);
if
(
ret
==
-
1
)
{
...
...
@@ -1434,9 +1431,6 @@ os_file_close_no_error_handling(
#else
int
ret
;
#ifdef USE_FILE_LOCK
(
void
)
os_file_lock
(
file
,
"unknown"
,
F_UNLCK
);
#endif
ret
=
close
(
file
);
if
(
ret
==
-
1
)
{
...
...
libmysqld/Makefile.am
View file @
4971ce3e
...
...
@@ -22,7 +22,6 @@ MYSQLSHAREdir = $(pkgdatadir)
MYSQLBASEdir
=
$(prefix)
DEFS
=
-DEMBEDDED_LIBRARY
-DMYSQL_SERVER
\
-DNO_EMBEDDED_ACCESS_CHECKS
\
-DDEFAULT_MYSQL_HOME
=
"
\"
$(MYSQLBASEdir)
\"
"
\
-DDATADIR
=
"
\"
$(MYSQLDATAdir)
\"
"
\
-DSHAREDIR
=
"
\"
$(MYSQLSHAREdir)
\"
"
...
...
libmysqld/libmysqld.def
View file @
4971ce3e
...
...
@@ -2,7 +2,8 @@ LIBRARY LIBMYSQLD
DESCRIPTION 'MySQL 4.1 Embedded Server Library'
VERSION 4.1
EXPORTS
_dig_vec
_dig_vec_upper
_dig_vec_lower
bmove_upp
delete_dynamic
free_defaults
...
...
myisam/mi_open.c
View file @
4971ce3e
...
...
@@ -20,6 +20,7 @@
#include "sp_defs.h"
#include "rt_index.h"
#include <m_ctype.h>
#include <assert.h>
#if defined(MSDOS) || defined(__WIN__)
#ifdef __WIN__
...
...
mysql-test/include/have_geometry.inc
0 → 100644
View file @
4971ce3e
--
require
r
/
have_geometry
.
require
disable_query_log
;
show
variables
like
"have_geometry"
;
enable_query_log
;
mysql-test/r/func_gconcat.result
View file @
4971ce3e
...
...
@@ -172,7 +172,7 @@ create table t1 ( URL_ID int(11), URL varchar(80));
create table t2 ( REQ_ID int(11), URL_ID int(11));
insert into t1 values (4,'www.host.com'), (5,'www.google.com'),(5,'www.help.com');
insert into t2 values (1,4), (5,4), (5,5);
select REQ_ID, Group_Concat(URL) as URL from t1, t2 where
select REQ_ID, Group_Concat(URL) as URL from t1, t2 where
t2.URL_ID = t1.URL_ID group by REQ_ID;
REQ_ID URL
1 X
...
...
mysql-test/r/have_geometry.require
0 → 100644
View file @
4971ce3e
Variable_name Value
have_geometry YES
mysql-test/t/func_gconcat.test
View file @
4971ce3e
...
...
@@ -83,7 +83,7 @@ insert into t1 values (4,'www.host.com'), (5,'www.google.com'),(5,'www.help.com'
insert
into
t2
values
(
1
,
4
),
(
5
,
4
),
(
5
,
5
);
# Make this order independent
--
replace_result
www
.
help
.
com
X
www
.
host
.
com
X
www
.
google
.
com
X
select
REQ_ID
,
Group_Concat
(
URL
)
as
URL
from
t1
,
t2
where
select
REQ_ID
,
Group_Concat
(
URL
)
as
URL
from
t1
,
t2
where
t2
.
URL_ID
=
t1
.
URL_ID
group
by
REQ_ID
;
# check min/max function
--
replace_result
www
.
help
.
com
X
www
.
host
.
com
X
www
.
google
.
com
X
...
...
@@ -132,7 +132,7 @@ drop table t1, t2;
CREATE
TABLE
t1
(
id1
tinyint
(
4
)
NOT
NULL
,
id2
tinyint
(
4
)
NOT
NULL
);
INSERT
INTO
t1
VALUES
(
1
,
1
),(
1
,
2
),(
1
,
3
),(
1
,
4
),(
1
,
5
),(
2
,
1
),(
2
,
2
),(
2
,
3
);
CREATE
TABLE
t2
(
id1
tinyint
(
4
)
NOT
NULL
);
CREATE
TABLE
t2
(
id1
tinyint
(
4
)
NOT
NULL
);
INSERT
INTO
t2
VALUES
(
1
),(
2
),(
3
),(
4
),(
5
);
SELECT
t1
.
id1
,
GROUP_CONCAT
(
t1
.
id2
ORDER
BY
t1
.
id2
ASC
)
AS
concat_id
FROM
t1
,
t2
WHERE
t1
.
id1
=
t2
.
id1
AND
t1
.
id1
=
1
GROUP
BY
t1
.
id1
;
SELECT
t1
.
id1
,
GROUP_CONCAT
(
t1
.
id2
ORDER
BY
t1
.
id2
ASC
)
AS
concat_id
FROM
t1
,
t2
WHERE
t1
.
id1
=
t2
.
id1
GROUP
BY
t1
.
id1
;
...
...
@@ -163,7 +163,7 @@ drop table t1;
# Test with subqueries (Bug #3319)
#
create
table
t1
(
a
int
,
c
int
);
create
table
t1
(
a
int
,
c
int
);
insert
into
t1
values
(
1
,
2
),
(
2
,
3
),
(
2
,
4
),
(
3
,
5
);
create
table
t2
(
a
int
,
c
int
);
insert
into
t2
values
(
1
,
5
),
(
2
,
4
),
(
3
,
3
),
(
3
,
3
);
...
...
mysql-test/t/gis-rtree.test
View file @
4971ce3e
--
source
include
/
have_geometry
.
inc
#
# test of rtree (using with spatial data)
#
...
...
mysql-test/t/gis.test
View file @
4971ce3e
--
source
include
/
have_geometry
.
inc
#
# Spatial objects
#
...
...
sql/ha_myisam.cc
View file @
4971ce3e
...
...
@@ -60,13 +60,11 @@ static void mi_check_print_msg(MI_CHECK *param, const char* msg_type,
DBUG_PRINT
(
msg_type
,(
"message: %s"
,
msgbuf
));
#ifndef EMBEDDED_LIBRARY
if
(
thd
->
net
.
vio
==
0
)
if
(
!
thd
->
vio_ok
())
{
sql_print_error
(
msgbuf
);
return
;
}
#endif
if
(
param
->
testflag
&
(
T_CREATE_MISSING_KEYS
|
T_SAFE_REPAIR
|
T_AUTO_REPAIR
))
...
...
sql/mysql_priv.h
View file @
4971ce3e
...
...
@@ -918,6 +918,7 @@ extern struct my_option my_long_options[];
extern
SHOW_COMP_OPTION
have_isam
,
have_innodb
,
have_berkeley_db
,
have_example_db
;
extern
SHOW_COMP_OPTION
have_raid
,
have_openssl
,
have_symlink
;
extern
SHOW_COMP_OPTION
have_query_cache
,
have_berkeley_db
,
have_innodb
;
extern
SHOW_COMP_OPTION
have_geometry
,
have_rtree_keys
;
extern
SHOW_COMP_OPTION
have_crypt
;
extern
SHOW_COMP_OPTION
have_compress
;
...
...
sql/mysqld.cc
View file @
4971ce3e
...
...
@@ -378,6 +378,7 @@ CHARSET_INFO *national_charset_info, *table_alias_charset;
SHOW_COMP_OPTION
have_berkeley_db
,
have_innodb
,
have_isam
,
have_ndbcluster
,
have_example_db
;
SHOW_COMP_OPTION
have_raid
,
have_openssl
,
have_symlink
,
have_query_cache
;
SHOW_COMP_OPTION
have_geometry
,
have_rtree_keys
;
SHOW_COMP_OPTION
have_crypt
,
have_compress
;
/* Thread specific variables */
...
...
@@ -661,7 +662,7 @@ static void close_connections(void)
break
;
}
#ifndef __bsdi__ // Bug in BSDI kernel
if
(
tmp
->
net
.
vio
)
if
(
tmp
->
vio_ok
()
)
{
sql_print_error
(
ER
(
ER_FORCING_CLOSE
),
my_progname
,
tmp
->
thread_id
,
tmp
->
user
?
tmp
->
user
:
""
);
...
...
@@ -5362,6 +5363,16 @@ static void mysql_init_variables(void)
#else
have_query_cache
=
SHOW_OPTION_NO
;
#endif
#ifdef HAVE_SPATIAL
have_geometry
=
SHOW_OPTION_YES
;
#else
have_geometry
=
SHOW_OPTION_NO
;
#endif
#ifdef HAVE_RTREE_KEYS
have_rtree_keys
=
SHOW_OPTION_YES
;
#else
have_rtree_keys
=
SHOW_OPTION_NO
;
#endif
#ifdef HAVE_CRYPT
have_crypt
=
SHOW_OPTION_YES
;
#else
...
...
sql/set_var.cc
View file @
4971ce3e
...
...
@@ -643,10 +643,12 @@ struct show_var_st init_vars[]= {
{
"have_crypt"
,
(
char
*
)
&
have_crypt
,
SHOW_HAVE
},
{
"have_innodb"
,
(
char
*
)
&
have_innodb
,
SHOW_HAVE
},
{
"have_isam"
,
(
char
*
)
&
have_isam
,
SHOW_HAVE
},
{
"have_geometry"
,
(
char
*
)
&
have_geometry
,
SHOW_HAVE
},
{
"have_ndbcluster"
,
(
char
*
)
&
have_ndbcluster
,
SHOW_HAVE
},
{
"have_openssl"
,
(
char
*
)
&
have_openssl
,
SHOW_HAVE
},
{
"have_query_cache"
,
(
char
*
)
&
have_query_cache
,
SHOW_HAVE
},
{
"have_raid"
,
(
char
*
)
&
have_raid
,
SHOW_HAVE
},
{
"have_rtree_keys"
,
(
char
*
)
&
have_rtree_keys
,
SHOW_HAVE
},
{
"have_symlink"
,
(
char
*
)
&
have_symlink
,
SHOW_HAVE
},
{
"init_connect"
,
(
char
*
)
&
sys_init_connect
,
SHOW_SYS
},
{
"init_file"
,
(
char
*
)
&
opt_init_file
,
SHOW_CHAR_PTR
},
...
...
sql/share/romanian/errmsg.txt
View file @
4971ce3e
...
...
@@ -192,7 +192,7 @@ character-set=latin2
"Got error %d during FLUSH_LOGS",
"Got error %d during CHECKPOINT",
"Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)",
"The handler for the table does not support binary table dump",
"Binlog closed while trying to FLUSH MASTER",
"The handler for the table does not support binary table dump",
"Binlog closed while trying to FLUSH MASTER",
"Failed rebuilding the index of dumped table '%-.64s'",
"Error from master: '%-.64s'",
...
...
sql/share/serbian/errmsg.txt
View file @
4971ce3e
...
...
@@ -236,6 +236,18 @@ character-set=cp1250
"Meanje tabela koje podravaju transakcije i onih koje ne podravaju transakcije je iskljueno",
"Opcija '%s' je upotrebljena dva puta u istom iskazu",
"User '%-.64s' has exceeded the '%s' resource (current value: %ld)",
"Access denied. You need the %-.128s privilege for this operation",
"Variable '%-.64s' is a SESSION variable and can't be used with SET GLOBAL",
"Variable '%-.64s' is a GLOBAL variable and should be set with SET GLOBAL",
"Variable '%-.64s' doesn't have a default value",
"Variable '%-.64s' can't be set to the value of '%-.64s'",
"Wrong argument type to variable '%-.64s'",
"Variable '%-.64s' can only be set, not read",
"Wrong usage/placement of '%s'",
"This version of MySQL doesn't yet support '%s'",
"Got fatal error %d: '%-.128s' from master when reading data from binary log",
"Slave SQL thread ignored the query because of replicate-*-table rules",
"Variable '%-.64s' is a %s variable",
"Wrong foreign key definition for '%-.64s': %s",
"Key reference and table reference doesn't match",
"Operand should contain %d column(s)",
...
...
sql/slave.cc
View file @
4971ce3e
...
...
@@ -1386,7 +1386,7 @@ int fetch_master_table(THD *thd, const char *db_name, const char *table_name,
thd
->
net
.
no_send_ok
=
0
;
// Clear up garbage after create_table_from_dump
if
(
!
called_connected
)
mysql_close
(
mysql
);
if
(
errmsg
&&
thd
->
net
.
vio
)
if
(
errmsg
&&
thd
->
vio_ok
()
)
send_error
(
thd
,
error
,
errmsg
);
DBUG_RETURN
(
test
(
error
));
// Return 1 on error
}
...
...
sql/sql_class.cc
View file @
4971ce3e
...
...
@@ -746,7 +746,7 @@ bool select_send::send_data(List<Item> &items)
}
}
thd
->
sent_row_count
++
;
if
(
!
thd
->
net
.
vio
)
if
(
!
thd
->
vio_ok
()
)
DBUG_RETURN
(
0
);
if
(
!
thd
->
net
.
report_error
)
DBUG_RETURN
(
protocol
->
write
());
...
...
sql/sql_class.h
View file @
4971ce3e
...
...
@@ -932,8 +932,10 @@ class THD :public ilink,
net
.
last_errno
=
0
;
net
.
report_error
=
0
;
}
inline
bool
vio_ok
()
const
{
return
net
.
vio
;
}
#else
void
clear_error
();
inline
bool
vio_ok
()
const
{
return
true
;
}
#endif
inline
void
fatal_error
()
{
...
...
sql/sql_insert.cc
View file @
4971ce3e
...
...
@@ -1199,7 +1199,8 @@ extern "C" pthread_handler_decl(handle_delayed_insert,arg)
/* request for new delayed insert */
if
(
!
(
thd
->
lock
=
mysql_lock_tables
(
thd
,
&
di
->
table
,
1
)))
{
di
->
dead
=
thd
->
killed
=
1
;
// Fatal error
di
->
dead
=
1
;
// Some fatal error
thd
->
killed
=
1
;
}
pthread_cond_broadcast
(
&
di
->
cond_client
);
}
...
...
@@ -1207,7 +1208,8 @@ extern "C" pthread_handler_decl(handle_delayed_insert,arg)
{
if
(
di
->
handle_inserts
())
{
di
->
dead
=
thd
->
killed
=
1
;
// Some fatal error
di
->
dead
=
1
;
// Some fatal error
thd
->
killed
=
1
;
}
}
di
->
status
=
0
;
...
...
@@ -1234,7 +1236,8 @@ extern "C" pthread_handler_decl(handle_delayed_insert,arg)
close_thread_tables
(
thd
);
// Free the table
di
->
table
=
0
;
di
->
dead
=
thd
->
killed
=
1
;
// If error
di
->
dead
=
1
;
// If error
thd
->
killed
=
1
;
pthread_cond_broadcast
(
&
di
->
cond_client
);
// Safety
pthread_mutex_unlock
(
&
di
->
mutex
);
...
...
sql/sql_show.cc
View file @
4971ce3e
...
...
@@ -1540,13 +1540,8 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
while
((
tmp
=
it
++
))
{
struct
st_my_thread_var
*
mysys_var
;
#ifndef EMBEDDED_LIBRARY
if
((
tmp
->
net
.
vio
||
tmp
->
system_thread
)
&&
(
!
user
||
(
tmp
->
user
&&
!
strcmp
(
tmp
->
user
,
user
))))
#else
if
(
tmp
->
system_thread
&&
if
((
tmp
->
vio_ok
()
||
tmp
->
system_thread
)
&&
(
!
user
||
(
tmp
->
user
&&
!
strcmp
(
tmp
->
user
,
user
))))
#endif
{
thread_info
*
thd_info
=
new
thread_info
;
...
...
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