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
5423bd71
Commit
5423bd71
authored
Jul 23, 2002
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Trying to merge....
Docs/manual.texi: t
parents
9fb55d29
d190cae0
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
278 additions
and
48 deletions
+278
-48
Docs/Makefile.am
Docs/Makefile.am
+3
-3
Docs/manual.texi
Docs/manual.texi
+160
-17
Makefile.am
Makefile.am
+1
-1
include/my_sys.h
include/my_sys.h
+1
-2
include/myisam.h
include/myisam.h
+1
-1
libmysqld/Makefile.am
libmysqld/Makefile.am
+1
-1
myisam/mi_check.c
myisam/mi_check.c
+2
-2
mysql-test/r/merge.result
mysql-test/r/merge.result
+77
-10
mysql-test/t/merge.test
mysql-test/t/merge.test
+15
-6
sql/ha_myisammrg.cc
sql/ha_myisammrg.cc
+1
-2
sql/ha_myisammrg.h
sql/ha_myisammrg.h
+1
-1
sql/handler.cc
sql/handler.cc
+15
-2
No files found.
Docs/Makefile.am
View file @
5423bd71
...
@@ -27,7 +27,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) $(BUILT_SOURCES) mysqld_error.txt \
...
@@ -27,7 +27,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) $(BUILT_SOURCES) mysqld_error.txt \
all
:
$(targets) txt_files
all
:
$(targets) txt_files
txt_files
:
../INSTALL-SOURCE ../COPYING ../COPYING.LIB
\
txt_files
:
../INSTALL-SOURCE ../COPYING ../COPYING.LIB
\
../MIRRORS INSTALL-BINARY
INSTALL-BINARY
#
../MIRRORS
CLEAN_FILES
:
$(BUILD_SOURCES)
CLEAN_FILES
:
$(BUILD_SOURCES)
touch
$(BUILD_SOURCES)
touch
$(BUILD_SOURCES)
...
@@ -254,8 +254,8 @@ INSTALL-BINARY: mysql.info $(GT)
...
@@ -254,8 +254,8 @@ INSTALL-BINARY: mysql.info $(GT)
../COPYING.LIB
:
mysql.info $(GT)
../COPYING.LIB
:
mysql.info $(GT)
perl
-w
$(GT)
mysql.info
"LGPL license"
"Function Index"
>
$@
perl
-w
$(GT)
mysql.info
"LGPL license"
"Function Index"
>
$@
../MIRRORS
:
manual.texi $(srcdir)/Support/generate-mirror-listing.pl
#
../MIRRORS: manual.texi $(srcdir)/Support/generate-mirror-listing.pl
perl
-w
$(srcdir)
/Support/generate-mirror-listing.pl manual.texi
>
$@
#
perl -w $(srcdir)/Support/generate-mirror-listing.pl manual.texi > $@
# Don't update the files from bitkeeper
# Don't update the files from bitkeeper
%
::
SCCS/s.%
%
::
SCCS/s.%
Docs/manual.texi
View file @
5423bd71
This diff is collapsed.
Click to expand it.
Makefile.am
View file @
5423bd71
...
@@ -20,7 +20,7 @@ AUTOMAKE_OPTIONS = foreign
...
@@ -20,7 +20,7 @@ AUTOMAKE_OPTIONS = foreign
# These are built from source in the Docs directory
# These are built from source in the Docs directory
EXTRA_DIST
=
INSTALL-SOURCE README
\
EXTRA_DIST
=
INSTALL-SOURCE README
\
COPYING COPYING.LIB
MIRRORS
COPYING COPYING.LIB
SUBDIRS
=
include @docs_dirs@ @readline_dir@
\
SUBDIRS
=
include @docs_dirs@ @readline_dir@
\
@thread_dirs@ pstack @sql_client_dirs@
\
@thread_dirs@ pstack @sql_client_dirs@
\
@sql_server_dirs@ @libmysqld_dirs@ scripts man
\
@sql_server_dirs@ @libmysqld_dirs@ scripts man
\
...
...
include/my_sys.h
View file @
5423bd71
...
@@ -323,8 +323,7 @@ typedef struct st_io_cache_share
...
@@ -323,8 +323,7 @@ typedef struct st_io_cache_share
int
count
;
int
count
;
/* actual IO_CACHE that filled the buffer */
/* actual IO_CACHE that filled the buffer */
struct
st_io_cache
*
active
;
struct
st_io_cache
*
active
;
/* the following will be implemented whenever the need arises */
#ifdef NOT_YET_IMPLEMENTED
#ifdef NOT_IMPLEMENTED
/* whether the structure should be free'd */
/* whether the structure should be free'd */
my_bool
alloced
;
my_bool
alloced
;
#endif
#endif
...
...
include/myisam.h
View file @
5423bd71
...
@@ -358,7 +358,7 @@ typedef struct st_sort_info
...
@@ -358,7 +358,7 @@ typedef struct st_sort_info
MI_CHECK
*
param
;
MI_CHECK
*
param
;
enum
data_file_type
new_data_file_type
;
enum
data_file_type
new_data_file_type
;
SORT_KEY_BLOCKS
*
key_block
,
*
key_block_end
;
SORT_KEY_BLOCKS
*
key_block
,
*
key_block_end
;
uint
kei
,
total_keys
;
uint
current_key
,
total_keys
;
my_off_t
filelength
,
dupp
,
buff_length
;
my_off_t
filelength
,
dupp
,
buff_length
;
ha_rows
max_records
;
ha_rows
max_records
;
char
*
buff
;
char
*
buff
;
...
...
libmysqld/Makefile.am
View file @
5423bd71
...
@@ -49,7 +49,7 @@ sqlsources = convert.cc derror.cc field.cc field_conv.cc filesort.cc \
...
@@ -49,7 +49,7 @@ sqlsources = convert.cc derror.cc field.cc field_conv.cc filesort.cc \
repl_failsafe.cc slave.cc
\
repl_failsafe.cc slave.cc
\
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc
\
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc
\
sql_crypt.cc sql_db.cc sql_delete.cc sql_insert.cc sql_lex.cc
\
sql_crypt.cc sql_db.cc sql_delete.cc sql_insert.cc sql_lex.cc
\
sql_list.cc sql_manager.cc sql_map.cc sql_parse.cc
\
sql_list.cc sql_manager.cc sql_map.cc sql_
olap.cc sql_
parse.cc
\
sql_rename.cc sql_repl.cc sql_select.cc sql_do.cc sql_show.cc
\
sql_rename.cc sql_repl.cc sql_select.cc sql_do.cc sql_show.cc
\
sql_string.cc sql_table.cc sql_test.cc sql_udf.cc
\
sql_string.cc sql_table.cc sql_test.cc sql_udf.cc
\
sql_update.cc sql_yacc.cc table.cc thr_malloc.cc time.cc
\
sql_update.cc sql_yacc.cc table.cc thr_malloc.cc time.cc
\
...
...
myisam/mi_check.c
View file @
5423bd71
...
@@ -3223,7 +3223,7 @@ static int sort_delete_record(MI_SORT_PARAM *sort_param)
...
@@ -3223,7 +3223,7 @@ static int sort_delete_record(MI_SORT_PARAM *sort_param)
old_file
=
info
->
dfile
;
old_file
=
info
->
dfile
;
info
->
dfile
=
info
->
rec_cache
.
file
;
info
->
dfile
=
info
->
rec_cache
.
file
;
if
(
sort_info
->
kei
)
if
(
sort_info
->
current_key
)
{
{
key
=
info
->
lastkey
+
info
->
s
->
base
.
max_key_length
;
key
=
info
->
lastkey
+
info
->
s
->
base
.
max_key_length
;
if
((
error
=
(
*
info
->
s
->
read_rnd
)(
info
,
sort_param
->
record
,
info
->
lastpos
,
0
))
&&
if
((
error
=
(
*
info
->
s
->
read_rnd
)(
info
,
sort_param
->
record
,
info
->
lastpos
,
0
))
&&
...
@@ -3234,7 +3234,7 @@ static int sort_delete_record(MI_SORT_PARAM *sort_param)
...
@@ -3234,7 +3234,7 @@ static int sort_delete_record(MI_SORT_PARAM *sort_param)
DBUG_RETURN
(
1
);
DBUG_RETURN
(
1
);
}
}
for
(
i
=
0
;
i
<
sort_info
->
kei
;
i
++
)
for
(
i
=
0
;
i
<
sort_info
->
current_key
;
i
++
)
{
{
uint
key_length
=
_mi_make_key
(
info
,
i
,
key
,
sort_param
->
record
,
info
->
lastpos
);
uint
key_length
=
_mi_make_key
(
info
,
i
,
key
,
sort_param
->
record
,
info
->
lastpos
);
if
(
_mi_ck_delete
(
info
,
i
,
key
,
key_length
))
if
(
_mi_ck_delete
(
info
,
i
,
key
,
key_length
))
...
...
mysql-test/r/merge.result
View file @
5423bd71
...
@@ -275,12 +275,12 @@ a b
...
@@ -275,12 +275,12 @@ a b
1 2
1 2
drop table t3,t1,t2;
drop table t3,t1,t2;
drop table if exists t6, t5, t4, t3, t2, t1;
drop table if exists t6, t5, t4, t3, t2, t1;
create table t1 (a int not null, b int not null
,
key(a,b));
create table t1 (a int not null, b int not null
auto_increment, primary
key(a,b));
create table t2 (a int not null, b int not null
,
key(a,b));
create table t2 (a int not null, b int not null
auto_increment, primary
key(a,b));
create table t3 (a int not null, b int not null, key(a,b)) UNION=(t1,t2) INSERT_METHOD=NO;
create table t3 (a int not null, b int not null, key(a,b)) UNION=(t1,t2) INSERT_METHOD=NO;
create table t4 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=NO;
create table t4 (a int not null, b int not null, key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=NO;
create table t5 (a int not null, b int not null
,
key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST;
create table t5 (a int not null, b int not null
auto_increment, primary
key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=FIRST;
create table t6 (a int not null, b int not null
,
key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
create table t6 (a int not null, b int not null
auto_increment, primary
key(a,b)) TYPE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
show create table t3;
show create table t3;
Table Create Table
Table Create Table
t3 CREATE TABLE `t3` (
t3 CREATE TABLE `t3` (
...
@@ -299,18 +299,18 @@ show create table t5;
...
@@ -299,18 +299,18 @@ show create table t5;
Table Create Table
Table Create Table
t5 CREATE TABLE `t5` (
t5 CREATE TABLE `t5` (
`a` int(11) NOT NULL default '0',
`a` int(11) NOT NULL default '0',
`b` int(11) NOT NULL
default '0'
,
`b` int(11) NOT NULL
auto_increment
,
KEY `a`
(`a`,`b`)
PRIMARY KEY
(`a`,`b`)
) TYPE=MRG_MyISAM INSERT_METHOD=FIRST UNION=(t1,t2)
) TYPE=MRG_MyISAM INSERT_METHOD=FIRST UNION=(t1,t2)
show create table t6;
show create table t6;
Table Create Table
Table Create Table
t6 CREATE TABLE `t6` (
t6 CREATE TABLE `t6` (
`a` int(11) NOT NULL default '0',
`a` int(11) NOT NULL default '0',
`b` int(11) NOT NULL
default '0'
,
`b` int(11) NOT NULL
auto_increment
,
KEY `a`
(`a`,`b`)
PRIMARY KEY
(`a`,`b`)
) TYPE=MRG_MyISAM INSERT_METHOD=LAST UNION=(t1,t2)
) TYPE=MRG_MyISAM INSERT_METHOD=LAST UNION=(t1,t2)
insert into t1 values (1,
1),(1,2),(1,3),(1,4
);
insert into t1 values (1,
NULL),(1,NULL),(1,NULL),(1,NULL
);
insert into t2 values (2,
1),(2,2),(2,3),(2,4
);
insert into t2 values (2,
NULL),(2,NULL),(2,NULL),(2,NULL
);
select * from t3 order by b,a limit 3;
select * from t3 order by b,a limit 3;
a b
a b
select * from t4 order by b,a limit 3;
select * from t4 order by b,a limit 3;
...
@@ -461,6 +461,73 @@ a b
...
@@ -461,6 +461,73 @@ a b
5 2
5 2
6 1
6 1
6 2
6 2
select 1;
1
1
insert into t5 values (1,NULL),(5,NULL);
insert into t6 values (2,NULL),(6,NULL);
select * from t1 order by a,b;
a b
1 1
1 2
1 3
1 4
1 5
4 1
4 2
5 1
5 2
5 3
select * from t2 order by a,b;
a b
2 1
2 2
2 3
2 4
2 5
6 1
6 2
6 3
select * from t5 order by a,b;
a b
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
4 1
4 2
5 1
5 2
5 3
6 1
6 2
6 3
select * from t6 order by a,b;
a b
1 1
1 2
1 3
1 4
1 5
2 1
2 2
2 3
2 4
2 5
4 1
4 2
5 1
5 2
5 3
6 1
6 2
6 3
drop table if exists t6, t5, t4, t3, t2, t1;
drop table if exists t6, t5, t4, t3, t2, t1;
CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
CREATE TABLE t1 ( a int(11) NOT NULL default '0', b int(11) NOT NULL default '0', PRIMARY KEY (a,b)) TYPE=MyISAM;
INSERT INTO t1 VALUES (1,1), (2,1);
INSERT INTO t1 VALUES (1,1), (2,1);
...
...
mysql-test/t/merge.test
View file @
5423bd71
...
@@ -129,18 +129,18 @@ drop table t3,t1,t2;
...
@@ -129,18 +129,18 @@ drop table t3,t1,t2;
drop
table
if
exists
t6
,
t5
,
t4
,
t3
,
t2
,
t1
;
drop
table
if
exists
t6
,
t5
,
t4
,
t3
,
t2
,
t1
;
# first testing of common stuff with new parameters
# first testing of common stuff with new parameters
create
table
t1
(
a
int
not
null
,
b
int
not
null
,
key
(
a
,
b
));
create
table
t1
(
a
int
not
null
,
b
int
not
null
auto_increment
,
primary
key
(
a
,
b
));
create
table
t2
(
a
int
not
null
,
b
int
not
null
,
key
(
a
,
b
));
create
table
t2
(
a
int
not
null
,
b
int
not
null
auto_increment
,
primary
key
(
a
,
b
));
create
table
t3
(
a
int
not
null
,
b
int
not
null
,
key
(
a
,
b
))
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
NO
;
create
table
t3
(
a
int
not
null
,
b
int
not
null
,
key
(
a
,
b
))
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
NO
;
create
table
t4
(
a
int
not
null
,
b
int
not
null
,
key
(
a
,
b
))
TYPE
=
MERGE
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
NO
;
create
table
t4
(
a
int
not
null
,
b
int
not
null
,
key
(
a
,
b
))
TYPE
=
MERGE
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
NO
;
create
table
t5
(
a
int
not
null
,
b
int
not
null
,
key
(
a
,
b
))
TYPE
=
MERGE
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
FIRST
;
create
table
t5
(
a
int
not
null
,
b
int
not
null
auto_increment
,
primary
key
(
a
,
b
))
TYPE
=
MERGE
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
FIRST
;
create
table
t6
(
a
int
not
null
,
b
int
not
null
,
key
(
a
,
b
))
TYPE
=
MERGE
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
LAST
;
create
table
t6
(
a
int
not
null
,
b
int
not
null
auto_increment
,
primary
key
(
a
,
b
))
TYPE
=
MERGE
UNION
=
(
t1
,
t2
)
INSERT_METHOD
=
LAST
;
show
create
table
t3
;
show
create
table
t3
;
show
create
table
t4
;
show
create
table
t4
;
show
create
table
t5
;
show
create
table
t5
;
show
create
table
t6
;
show
create
table
t6
;
insert
into
t1
values
(
1
,
1
),(
1
,
2
),(
1
,
3
),(
1
,
4
);
insert
into
t1
values
(
1
,
NULL
),(
1
,
NULL
),(
1
,
NULL
),(
1
,
NULL
);
insert
into
t2
values
(
2
,
1
),(
2
,
2
),(
2
,
3
),(
2
,
4
);
insert
into
t2
values
(
2
,
NULL
),(
2
,
NULL
),(
2
,
NULL
),(
2
,
NULL
);
select
*
from
t3
order
by
b
,
a
limit
3
;
select
*
from
t3
order
by
b
,
a
limit
3
;
select
*
from
t4
order
by
b
,
a
limit
3
;
select
*
from
t4
order
by
b
,
a
limit
3
;
select
*
from
t5
order
by
b
,
a
limit
3
,
3
;
select
*
from
t5
order
by
b
,
a
limit
3
,
3
;
...
@@ -167,7 +167,16 @@ select * from t2 order by a,b;
...
@@ -167,7 +167,16 @@ select * from t2 order by a,b;
select
*
from
t3
order
by
a
,
b
;
select
*
from
t3
order
by
a
,
b
;
select
*
from
t4
order
by
a
,
b
;
select
*
from
t4
order
by
a
,
b
;
select
*
from
t5
order
by
a
,
b
;
select
*
from
t5
order
by
a
,
b
;
# auto_increment
select
1
;
insert
into
t5
values
(
1
,
NULL
),(
5
,
NULL
);
insert
into
t6
values
(
2
,
NULL
),(
6
,
NULL
);
select
*
from
t1
order
by
a
,
b
;
select
*
from
t2
order
by
a
,
b
;
select
*
from
t5
order
by
a
,
b
;
select
*
from
t6
order
by
a
,
b
;
drop
table
if
exists
t6
,
t5
,
t4
,
t3
,
t2
,
t1
;
drop
table
if
exists
t6
,
t5
,
t4
,
t3
,
t2
,
t1
;
CREATE
TABLE
t1
(
a
int
(
11
)
NOT
NULL
default
'0'
,
b
int
(
11
)
NOT
NULL
default
'0'
,
PRIMARY
KEY
(
a
,
b
))
TYPE
=
MyISAM
;
CREATE
TABLE
t1
(
a
int
(
11
)
NOT
NULL
default
'0'
,
b
int
(
11
)
NOT
NULL
default
'0'
,
PRIMARY
KEY
(
a
,
b
))
TYPE
=
MyISAM
;
INSERT
INTO
t1
VALUES
(
1
,
1
),
(
2
,
1
);
INSERT
INTO
t1
VALUES
(
1
,
1
),
(
2
,
1
);
CREATE
TABLE
t2
(
a
int
(
11
)
NOT
NULL
default
'0'
,
b
int
(
11
)
NOT
NULL
default
'0'
,
PRIMARY
KEY
(
a
,
b
))
TYPE
=
MyISAM
;
CREATE
TABLE
t2
(
a
int
(
11
)
NOT
NULL
default
'0'
,
b
int
(
11
)
NOT
NULL
default
'0'
,
PRIMARY
KEY
(
a
,
b
))
TYPE
=
MyISAM
;
...
...
sql/ha_myisammrg.cc
View file @
5423bd71
...
@@ -75,8 +75,7 @@ int ha_myisammrg::write_row(byte * buf)
...
@@ -75,8 +75,7 @@ int ha_myisammrg::write_row(byte * buf)
if
(
table
->
time_stamp
)
if
(
table
->
time_stamp
)
update_timestamp
(
buf
+
table
->
time_stamp
-
1
);
update_timestamp
(
buf
+
table
->
time_stamp
-
1
);
if
(
table
->
next_number_field
&&
buf
==
table
->
record
[
0
])
if
(
table
->
next_number_field
&&
buf
==
table
->
record
[
0
])
return
(
my_errno
=
HA_ERR_WRONG_COMMAND
);
update_auto_increment
();
// update_auto_increment(); - [phi] have to check this before allowing it
return
myrg_write
(
file
,
buf
);
return
myrg_write
(
file
,
buf
);
}
}
...
...
sql/ha_myisammrg.h
View file @
5423bd71
...
@@ -34,7 +34,7 @@ class ha_myisammrg: public handler
...
@@ -34,7 +34,7 @@ class ha_myisammrg: public handler
const
char
**
bas_ext
()
const
;
const
char
**
bas_ext
()
const
;
ulong
table_flags
()
const
ulong
table_flags
()
const
{
{
return
(
HA_REC_NOT_IN_SEQ
|
HA_READ_RND_SAME
|
return
(
HA_REC_NOT_IN_SEQ
|
HA_READ_RND_SAME
|
HA_AUTO_PART_KEY
|
HA_KEYPOS_TO_RNDPOS
|
HA_LASTKEY_ORDER
|
HA_KEYPOS_TO_RNDPOS
|
HA_LASTKEY_ORDER
|
HA_NULL_KEY
|
HA_BLOB_KEY
);
HA_NULL_KEY
|
HA_BLOB_KEY
);
}
}
...
...
sql/handler.cc
View file @
5423bd71
...
@@ -628,16 +628,29 @@ longlong handler::get_auto_increment()
...
@@ -628,16 +628,29 @@ longlong handler::get_auto_increment()
{
{
longlong
nr
;
longlong
nr
;
int
error
;
int
error
;
(
void
)
extra
(
HA_EXTRA_KEYREAD
);
(
void
)
extra
(
HA_EXTRA_KEYREAD
);
index_init
(
table
->
next_number_index
);
index_init
(
table
->
next_number_index
);
error
=
index_last
(
table
->
record
[
1
]);
if
(
!
table
->
next_number_key_offset
)
{
// Autoincrement at key-start
error
=
index_last
(
table
->
record
[
1
]);
}
else
{
byte
key
[
MAX_KEY_LENGTH
];
key_copy
(
key
,
table
,
table
->
next_number_index
,
table
->
next_number_key_offset
);
error
=
index_read
(
table
->
record
[
1
],
key
,
table
->
next_number_key_offset
,
HA_READ_PREFIX_LAST
);
}
if
(
error
)
if
(
error
)
nr
=
1
;
nr
=
1
;
else
else
nr
=
(
longlong
)
table
->
next_number_field
->
nr
=
(
longlong
)
table
->
next_number_field
->
val_int_offset
(
table
->
rec_buff_length
)
+
1
;
val_int_offset
(
table
->
rec_buff_length
)
+
1
;
(
void
)
extra
(
HA_EXTRA_NO_KEYREAD
);
index_end
();
index_end
();
(
void
)
extra
(
HA_EXTRA_NO_KEYREAD
);
return
nr
;
return
nr
;
}
}
...
...
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