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
c5020e3b
Commit
c5020e3b
authored
Oct 10, 2004
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
parents
703e396b
060707c2
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
64 additions
and
33 deletions
+64
-33
mysql-test/r/ndb_autodiscover.result
mysql-test/r/ndb_autodiscover.result
+3
-3
mysql-test/t/ndb_autodiscover.test
mysql-test/t/ndb_autodiscover.test
+2
-2
ndb/src/ndbapi/Ndb.cpp
ndb/src/ndbapi/Ndb.cpp
+4
-2
ndb/src/ndbapi/NdbDictionaryImpl.cpp
ndb/src/ndbapi/NdbDictionaryImpl.cpp
+34
-17
ndb/src/ndbapi/NdbDictionaryImpl.hpp
ndb/src/ndbapi/NdbDictionaryImpl.hpp
+21
-9
No files found.
mysql-test/r/ndb_autodiscover.result
View file @
c5020e3b
...
@@ -332,7 +332,7 @@ Handler_discover 0
...
@@ -332,7 +332,7 @@ Handler_discover 0
drop table t6;
drop table t6;
show tables;
show tables;
Tables_in_test
Tables_in_test
create table t1 (a int) engine=ndb;
create table t1 (a int
,b longblob
) engine=ndb;
show tables;
show tables;
Tables_in_test
Tables_in_test
t1
t1
...
@@ -342,10 +342,10 @@ show tables;
...
@@ -342,10 +342,10 @@ show tables;
Tables_in_test2
Tables_in_test2
select * from t1;
select * from t1;
ERROR 42S02: Table 'test2.t1' doesn't exist
ERROR 42S02: Table 'test2.t1' doesn't exist
create table t2 (b int) engine=ndb;
create table t2 (b int
,c longblob
) engine=ndb;
use test;
use test;
select * from t1;
select * from t1;
a
a
b
show tables;
show tables;
Tables_in_test
Tables_in_test
t1
t1
...
...
mysql-test/t/ndb_autodiscover.test
View file @
c5020e3b
...
@@ -434,14 +434,14 @@ drop table t6;
...
@@ -434,14 +434,14 @@ drop table t6;
show
tables
;
show
tables
;
create
table
t1
(
a
int
)
engine
=
ndb
;
create
table
t1
(
a
int
,
b
longblob
)
engine
=
ndb
;
show
tables
;
show
tables
;
create
database
test2
;
create
database
test2
;
use
test2
;
use
test2
;
show
tables
;
show
tables
;
--
error
1146
--
error
1146
select
*
from
t1
;
select
*
from
t1
;
create
table
t2
(
b
int
)
engine
=
ndb
;
create
table
t2
(
b
int
,
c
longblob
)
engine
=
ndb
;
use
test
;
use
test
;
select
*
from
t1
;
select
*
from
t1
;
show
tables
;
show
tables
;
...
...
ndb/src/ndbapi/Ndb.cpp
View file @
c5020e3b
...
@@ -770,7 +770,8 @@ Ndb::getAutoIncrementValue(const char* aTableName, Uint32 cacheSize)
...
@@ -770,7 +770,8 @@ Ndb::getAutoIncrementValue(const char* aTableName, Uint32 cacheSize)
{
{
DEBUG_TRACE
(
"getAutoIncrementValue"
);
DEBUG_TRACE
(
"getAutoIncrementValue"
);
const
char
*
internalTableName
=
internalizeTableName
(
aTableName
);
const
char
*
internalTableName
=
internalizeTableName
(
aTableName
);
Ndb_local_table_info
*
info
=
theDictionary
->
get_local_table_info
(
internalTableName
);
Ndb_local_table_info
*
info
=
theDictionary
->
get_local_table_info
(
internalTableName
,
false
);
if
(
info
==
0
)
if
(
info
==
0
)
return
~
0
;
return
~
0
;
const
NdbTableImpl
*
table
=
info
->
m_table_impl
;
const
NdbTableImpl
*
table
=
info
->
m_table_impl
;
...
@@ -851,7 +852,8 @@ Ndb::setAutoIncrementValue(const char* aTableName, Uint64 val, bool increase)
...
@@ -851,7 +852,8 @@ Ndb::setAutoIncrementValue(const char* aTableName, Uint64 val, bool increase)
{
{
DEBUG_TRACE
(
"setAutoIncrementValue "
<<
val
);
DEBUG_TRACE
(
"setAutoIncrementValue "
<<
val
);
const
char
*
internalTableName
=
internalizeTableName
(
aTableName
);
const
char
*
internalTableName
=
internalizeTableName
(
aTableName
);
Ndb_local_table_info
*
info
=
theDictionary
->
get_local_table_info
(
internalTableName
);
Ndb_local_table_info
*
info
=
theDictionary
->
get_local_table_info
(
internalTableName
,
false
);
if
(
info
==
0
)
{
if
(
info
==
0
)
{
theError
=
theDictionary
->
getNdbError
();
theError
=
theDictionary
->
getNdbError
();
return
false
;
return
false
;
...
...
ndb/src/ndbapi/NdbDictionaryImpl.cpp
View file @
c5020e3b
...
@@ -653,7 +653,8 @@ NdbDictionaryImpl::fetchGlobalTableImpl(const char * internalTableName)
...
@@ -653,7 +653,8 @@ NdbDictionaryImpl::fetchGlobalTableImpl(const char * internalTableName)
m_globalHash
->
unlock
();
m_globalHash
->
unlock
();
if
(
impl
==
0
){
if
(
impl
==
0
){
impl
=
m_receiver
.
getTable
(
internalTableName
,
m_ndb
.
usingFullyQualifiedNames
());
impl
=
m_receiver
.
getTable
(
internalTableName
,
m_ndb
.
usingFullyQualifiedNames
());
m_globalHash
->
lock
();
m_globalHash
->
lock
();
m_globalHash
->
put
(
internalTableName
,
impl
);
m_globalHash
->
put
(
internalTableName
,
impl
);
m_globalHash
->
unlock
();
m_globalHash
->
unlock
();
...
@@ -663,15 +664,14 @@ NdbDictionaryImpl::fetchGlobalTableImpl(const char * internalTableName)
...
@@ -663,15 +664,14 @@ NdbDictionaryImpl::fetchGlobalTableImpl(const char * internalTableName)
}
}
}
}
Ndb_local_table_info
*
info
=
Ndb_local_table_info
::
create
(
impl
,
m_local_table_data_size
);
Ndb_local_table_info
*
info
=
Ndb_local_table_info
::
create
(
impl
,
m_local_table_data_size
);
m_localHash
.
put
(
internalTableName
,
info
);
m_localHash
.
put
(
internalTableName
,
info
);
m_ndb
.
theFirstTupleId
[
impl
->
getTableId
()]
=
~
0
;
m_ndb
.
theFirstTupleId
[
impl
->
getTableId
()]
=
~
0
;
m_ndb
.
theLastTupleId
[
impl
->
getTableId
()]
=
~
0
;
m_ndb
.
theLastTupleId
[
impl
->
getTableId
()]
=
~
0
;
addBlobTables
(
*
impl
);
return
info
;
return
info
;
}
}
...
@@ -1333,12 +1333,13 @@ NdbDictionaryImpl::createTable(NdbTableImpl &t)
...
@@ -1333,12 +1333,13 @@ NdbDictionaryImpl::createTable(NdbTableImpl &t)
if
(
t
.
m_noOfBlobs
==
0
)
if
(
t
.
m_noOfBlobs
==
0
)
return
0
;
return
0
;
// update table def from DICT
// update table def from DICT
NdbTableImpl
*
tp
=
getTable
(
t
.
m_externalName
.
c_str
());
Ndb_local_table_info
*
info
=
if
(
tp
==
NULL
)
{
get_local_table_info
(
t
.
m_internalName
.
c_str
(),
false
);
if
(
info
==
NULL
)
{
m_error
.
code
=
709
;
m_error
.
code
=
709
;
return
-
1
;
return
-
1
;
}
}
if
(
createBlobTables
(
*
tp
)
!=
0
)
{
if
(
createBlobTables
(
*
(
info
->
m_table_impl
)
)
!=
0
)
{
int
save_code
=
m_error
.
code
;
int
save_code
=
m_error
.
code
;
(
void
)
dropTable
(
t
);
(
void
)
dropTable
(
t
);
m_error
.
code
=
save_code
;
m_error
.
code
=
save_code
;
...
@@ -1359,8 +1360,12 @@ NdbDictionaryImpl::createBlobTables(NdbTableImpl &t)
...
@@ -1359,8 +1360,12 @@ NdbDictionaryImpl::createBlobTables(NdbTableImpl &t)
if
(
createTable
(
bt
)
!=
0
)
if
(
createTable
(
bt
)
!=
0
)
return
-
1
;
return
-
1
;
// Save BLOB table handle
// Save BLOB table handle
NdbTableImpl
*
cachedBlobTable
=
getTable
(
bt
.
m_externalName
.
c_str
());
Ndb_local_table_info
*
info
=
c
.
m_blobTable
=
cachedBlobTable
;
get_local_table_info
(
bt
.
m_internalName
.
c_str
(),
false
);
if
(
info
==
0
)
{
return
-
1
;
}
c
.
m_blobTable
=
info
->
m_table_impl
;
}
}
return
0
;
return
0
;
...
@@ -1369,14 +1374,22 @@ NdbDictionaryImpl::createBlobTables(NdbTableImpl &t)
...
@@ -1369,14 +1374,22 @@ NdbDictionaryImpl::createBlobTables(NdbTableImpl &t)
int
int
NdbDictionaryImpl
::
addBlobTables
(
NdbTableImpl
&
t
)
NdbDictionaryImpl
::
addBlobTables
(
NdbTableImpl
&
t
)
{
{
for
(
unsigned
i
=
0
;
i
<
t
.
m_columns
.
size
();
i
++
)
{
unsigned
n
=
t
.
m_noOfBlobs
;
// optimized for blob column being the last one
// and not looking for more than one if not neccessary
for
(
unsigned
i
=
t
.
m_columns
.
size
();
i
>
0
&&
n
>
0
;)
{
i
--
;
NdbColumnImpl
&
c
=
*
t
.
m_columns
[
i
];
NdbColumnImpl
&
c
=
*
t
.
m_columns
[
i
];
if
(
!
c
.
getBlobType
()
||
c
.
getPartSize
()
==
0
)
if
(
!
c
.
getBlobType
()
||
c
.
getPartSize
()
==
0
)
continue
;
continue
;
n
--
;
char
btname
[
NdbBlob
::
BlobTableNameSize
];
char
btname
[
NdbBlob
::
BlobTableNameSize
];
NdbBlob
::
getBlobTableName
(
btname
,
&
t
,
&
c
);
NdbBlob
::
getBlobTableName
(
btname
,
&
t
,
&
c
);
// Save BLOB table handle
// Save BLOB table handle
NdbTableImpl
*
cachedBlobTable
=
getTable
(
btname
);;
NdbTableImpl
*
cachedBlobTable
=
getTable
(
btname
);
if
(
cachedBlobTable
==
0
)
{
return
-
1
;
}
c
.
m_blobTable
=
cachedBlobTable
;
c
.
m_blobTable
=
cachedBlobTable
;
}
}
...
@@ -1587,7 +1600,8 @@ NdbDictInterface::createOrAlterTable(Ndb & ndb,
...
@@ -1587,7 +1600,8 @@ NdbDictInterface::createOrAlterTable(Ndb & ndb,
:
createTable
(
&
tSignal
,
ptr
);
:
createTable
(
&
tSignal
,
ptr
);
if
(
!
alter
&&
haveAutoIncrement
)
{
if
(
!
alter
&&
haveAutoIncrement
)
{
if
(
!
ndb
.
setAutoIncrementValue
(
impl
.
m_externalName
.
c_str
(),
autoIncrementValue
))
{
if
(
!
ndb
.
setAutoIncrementValue
(
impl
.
m_externalName
.
c_str
(),
autoIncrementValue
))
{
if
(
ndb
.
theError
.
code
==
0
)
{
if
(
ndb
.
theError
.
code
==
0
)
{
m_error
.
code
=
4336
;
m_error
.
code
=
4336
;
ndb
.
theError
=
m_error
;
ndb
.
theError
=
m_error
;
...
@@ -1607,7 +1621,6 @@ NdbDictInterface::createTable(NdbApiSignal* signal, LinearSectionPtr ptr[3])
...
@@ -1607,7 +1621,6 @@ NdbDictInterface::createTable(NdbApiSignal* signal, LinearSectionPtr ptr[3])
SimplePropertiesLinearReader
r
(
ptr
[
0
].
p
,
ptr
[
0
].
sz
);
SimplePropertiesLinearReader
r
(
ptr
[
0
].
p
,
ptr
[
0
].
sz
);
r
.
printAll
(
ndbout
);
r
.
printAll
(
ndbout
);
#endif
#endif
const
int
noErrCodes
=
2
;
const
int
noErrCodes
=
2
;
int
errCodes
[
noErrCodes
]
=
int
errCodes
[
noErrCodes
]
=
{
CreateTableRef
::
Busy
,
{
CreateTableRef
::
Busy
,
...
@@ -1625,7 +1638,10 @@ void
...
@@ -1625,7 +1638,10 @@ void
NdbDictInterface
::
execCREATE_TABLE_CONF
(
NdbApiSignal
*
signal
,
NdbDictInterface
::
execCREATE_TABLE_CONF
(
NdbApiSignal
*
signal
,
LinearSectionPtr
ptr
[
3
])
LinearSectionPtr
ptr
[
3
])
{
{
//CreateTableConf* const conf = CAST_PTR(CreateTableConf, signal->getDataPtr());
const
CreateTableConf
*
const
conf
=
CAST_CONSTPTR
(
CreateTableConf
,
signal
->
getDataPtr
());
Uint32
tableId
=
conf
->
tableId
;
Uint32
tableVersion
=
conf
->
tableVersion
;
m_waiter
.
signal
(
NO_WAIT
);
m_waiter
.
signal
(
NO_WAIT
);
}
}
...
@@ -1634,7 +1650,8 @@ void
...
@@ -1634,7 +1650,8 @@ void
NdbDictInterface
::
execCREATE_TABLE_REF
(
NdbApiSignal
*
signal
,
NdbDictInterface
::
execCREATE_TABLE_REF
(
NdbApiSignal
*
signal
,
LinearSectionPtr
ptr
[
3
])
LinearSectionPtr
ptr
[
3
])
{
{
const
CreateTableRef
*
const
ref
=
CAST_CONSTPTR
(
CreateTableRef
,
signal
->
getDataPtr
());
const
CreateTableRef
*
const
ref
=
CAST_CONSTPTR
(
CreateTableRef
,
signal
->
getDataPtr
());
m_error
.
code
=
ref
->
errorCode
;
m_error
.
code
=
ref
->
errorCode
;
m_masterNodeId
=
ref
->
masterNodeId
;
m_masterNodeId
=
ref
->
masterNodeId
;
m_waiter
.
signal
(
NO_WAIT
);
m_waiter
.
signal
(
NO_WAIT
);
...
@@ -1648,7 +1665,6 @@ NdbDictInterface::alterTable(NdbApiSignal* signal, LinearSectionPtr ptr[3])
...
@@ -1648,7 +1665,6 @@ NdbDictInterface::alterTable(NdbApiSignal* signal, LinearSectionPtr ptr[3])
SimplePropertiesLinearReader
r
(
ptr
[
0
].
p
,
ptr
[
0
].
sz
);
SimplePropertiesLinearReader
r
(
ptr
[
0
].
p
,
ptr
[
0
].
sz
);
r
.
printAll
(
ndbout
);
r
.
printAll
(
ndbout
);
#endif
#endif
const
int
noErrCodes
=
2
;
const
int
noErrCodes
=
2
;
int
errCodes
[
noErrCodes
]
=
int
errCodes
[
noErrCodes
]
=
{
AlterTableRef
::
NotMaster
,
{
AlterTableRef
::
NotMaster
,
...
@@ -1871,7 +1887,8 @@ NdbIndexImpl*
...
@@ -1871,7 +1887,8 @@ NdbIndexImpl*
NdbDictionaryImpl
::
getIndexImpl
(
const
char
*
externalName
,
NdbDictionaryImpl
::
getIndexImpl
(
const
char
*
externalName
,
const
char
*
internalName
)
const
char
*
internalName
)
{
{
Ndb_local_table_info
*
info
=
get_local_table_info
(
internalName
);
Ndb_local_table_info
*
info
=
get_local_table_info
(
internalName
,
false
);
if
(
info
==
0
){
if
(
info
==
0
){
m_error
.
code
=
4243
;
m_error
.
code
=
4243
;
return
0
;
return
0
;
...
...
ndb/src/ndbapi/NdbDictionaryImpl.hpp
View file @
c5020e3b
...
@@ -393,7 +393,8 @@ public:
...
@@ -393,7 +393,8 @@ public:
int
listIndexes
(
List
&
list
,
Uint32
indexId
);
int
listIndexes
(
List
&
list
,
Uint32
indexId
);
NdbTableImpl
*
getTable
(
const
char
*
tableName
,
void
**
data
=
0
);
NdbTableImpl
*
getTable
(
const
char
*
tableName
,
void
**
data
=
0
);
Ndb_local_table_info
*
get_local_table_info
(
const
char
*
internalName
);
Ndb_local_table_info
*
get_local_table_info
(
const
char
*
internalName
,
bool
do_add_blob_tables
);
NdbIndexImpl
*
getIndex
(
const
char
*
indexName
,
NdbIndexImpl
*
getIndex
(
const
char
*
indexName
,
const
char
*
tableName
);
const
char
*
tableName
);
NdbIndexImpl
*
getIndexImpl
(
const
char
*
name
,
const
char
*
internalName
);
NdbIndexImpl
*
getIndexImpl
(
const
char
*
name
,
const
char
*
internalName
);
...
@@ -613,8 +614,8 @@ inline
...
@@ -613,8 +614,8 @@ inline
NdbTableImpl
*
NdbTableImpl
*
NdbDictionaryImpl
::
getTable
(
const
char
*
tableName
,
void
**
data
)
NdbDictionaryImpl
::
getTable
(
const
char
*
tableName
,
void
**
data
)
{
{
const
char
*
internalTableName
=
m_ndb
.
internalizeTableName
(
tableName
);
Ndb_local_table_info
*
info
=
Ndb_local_table_info
*
info
=
get_local_table_info
(
internalTableNam
e
);
get_local_table_info
(
m_ndb
.
internalizeTableName
(
tableName
),
tru
e
);
if
(
info
==
0
)
{
if
(
info
==
0
)
{
return
0
;
return
0
;
}
}
...
@@ -626,13 +627,22 @@ NdbDictionaryImpl::getTable(const char * tableName, void **data)
...
@@ -626,13 +627,22 @@ NdbDictionaryImpl::getTable(const char * tableName, void **data)
inline
inline
Ndb_local_table_info
*
Ndb_local_table_info
*
NdbDictionaryImpl
::
get_local_table_info
(
const
char
*
internalTableName
)
NdbDictionaryImpl
::
get_local_table_info
(
const
char
*
internalTableName
,
bool
do_add_blob_tables
)
{
{
Ndb_local_table_info
*
info
=
m_localHash
.
get
(
internalTableName
);
Ndb_local_table_info
*
info
=
m_localHash
.
get
(
internalTableName
);
if
(
info
!=
0
)
{
if
(
info
==
0
)
{
return
info
;
// autoincrement already initialized
info
=
fetchGlobalTableImpl
(
internalTableName
);
if
(
info
==
0
)
{
return
0
;
}
}
if
(
do_add_blob_tables
&&
info
->
m_table_impl
->
m_noOfBlobs
&&
addBlobTables
(
*
(
info
->
m_table_impl
)))
{
return
0
;
}
}
return
fetchGlobalTableImpl
(
internalTableName
);
return
info
;
// autoincrement already initialized
}
}
inline
inline
...
@@ -647,10 +657,12 @@ NdbDictionaryImpl::getIndex(const char * indexName,
...
@@ -647,10 +657,12 @@ NdbDictionaryImpl::getIndex(const char * indexName,
if
(
t
!=
0
)
if
(
t
!=
0
)
internalIndexName
=
m_ndb
.
internalizeIndexName
(
t
,
indexName
);
internalIndexName
=
m_ndb
.
internalizeIndexName
(
t
,
indexName
);
}
else
{
}
else
{
internalIndexName
=
m_ndb
.
internalizeTableName
(
indexName
);
// Index is also a table
internalIndexName
=
m_ndb
.
internalizeTableName
(
indexName
);
// Index is also a table
}
}
if
(
internalIndexName
)
{
if
(
internalIndexName
)
{
Ndb_local_table_info
*
info
=
get_local_table_info
(
internalIndexName
);
Ndb_local_table_info
*
info
=
get_local_table_info
(
internalIndexName
,
false
);
if
(
info
)
{
if
(
info
)
{
NdbTableImpl
*
tab
=
info
->
m_table_impl
;
NdbTableImpl
*
tab
=
info
->
m_table_impl
;
if
(
tab
->
m_index
==
0
)
if
(
tab
->
m_index
==
0
)
...
...
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