summaryrefslogtreecommitdiff
path: root/storage/ndb
diff options
context:
space:
mode:
authorunknown <tomas@whalegate.ndb.mysql.com>2007-04-26 08:34:38 +0200
committerunknown <tomas@whalegate.ndb.mysql.com>2007-04-26 08:34:38 +0200
commit6932b4d74789327d97f2ced41c241d8be55bdee6 (patch)
tree6866092be037b6aef756f304bf64bc39a323ff11 /storage/ndb
parenta8fef66872555438921935ed783629a176505655 (diff)
downloadmariadb-git-6932b4d74789327d97f2ced41c241d8be55bdee6.tar.gz
ndb: force varpart part I, allow setting of flag in dictionary
Diffstat (limited to 'storage/ndb')
-rw-r--r--storage/ndb/include/kernel/signaldata/DictTabInfo.hpp2
-rw-r--r--storage/ndb/include/kernel/signaldata/LqhFrag.hpp3
-rw-r--r--storage/ndb/include/kernel/signaldata/TupFrag.hpp3
-rw-r--r--storage/ndb/include/ndbapi/NdbDictionary.hpp8
-rw-r--r--storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp2
-rw-r--r--storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp6
-rw-r--r--storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp9
-rw-r--r--storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp3
-rw-r--r--storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp3
-rw-r--r--storage/ndb/src/ndbapi/NdbDictionary.cpp10
-rw-r--r--storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp2
-rw-r--r--storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp1
12 files changed, 44 insertions, 8 deletions
diff --git a/storage/ndb/include/kernel/signaldata/DictTabInfo.hpp b/storage/ndb/include/kernel/signaldata/DictTabInfo.hpp
index bc41d8373fd..bb35a31321d 100644
--- a/storage/ndb/include/kernel/signaldata/DictTabInfo.hpp
+++ b/storage/ndb/include/kernel/signaldata/DictTabInfo.hpp
@@ -118,6 +118,7 @@ public:
FrmData = 27,
TableTemporaryFlag = 28, //Default not Temporary
+ ForceVarPartFlag = 29,
FragmentCount = 128, // No of fragments in table (!fragment replicas)
FragmentDataLen = 129,
@@ -299,6 +300,7 @@ public:
Uint32 PrimaryTableId;
Uint32 TableLoggedFlag;
Uint32 TableTemporaryFlag;
+ Uint32 ForceVarPartFlag;
Uint32 NoOfKeyAttr;
Uint32 NoOfAttributes;
Uint32 NoOfNullable;
diff --git a/storage/ndb/include/kernel/signaldata/LqhFrag.hpp b/storage/ndb/include/kernel/signaldata/LqhFrag.hpp
index 40ed73ad2e7..d4f4877cc5b 100644
--- a/storage/ndb/include/kernel/signaldata/LqhFrag.hpp
+++ b/storage/ndb/include/kernel/signaldata/LqhFrag.hpp
@@ -105,7 +105,7 @@ class LqhFragReq {
friend bool printLQH_FRAG_REQ(FILE *, const Uint32 *, Uint32, Uint16);
public:
- STATIC_CONST( SignalLength = 24 );
+ STATIC_CONST( SignalLength = 25 );
enum RequestInfo {
CreateInRunning = 0x8000000,
@@ -143,6 +143,7 @@ private:
Uint32 maxRowsHigh;
Uint32 minRowsLow;
Uint32 minRowsHigh;
+ Uint32 forceVarPartFlag;
};
class LqhFragConf {
diff --git a/storage/ndb/include/kernel/signaldata/TupFrag.hpp b/storage/ndb/include/kernel/signaldata/TupFrag.hpp
index cae548aa094..106518dd47b 100644
--- a/storage/ndb/include/kernel/signaldata/TupFrag.hpp
+++ b/storage/ndb/include/kernel/signaldata/TupFrag.hpp
@@ -29,7 +29,7 @@ class TupFragReq {
friend class Dblqh;
friend class Dbtup;
public:
- STATIC_CONST( SignalLength = 17 );
+ STATIC_CONST( SignalLength = 18 );
private:
Uint32 userPtr;
Uint32 userRef;
@@ -48,6 +48,7 @@ private:
Uint32 checksumIndicator;
Uint32 globalCheckpointIdIndicator;
Uint32 tablespaceid;
+ Uint32 forceVarPartFlag;
};
class TupFragConf {
diff --git a/storage/ndb/include/ndbapi/NdbDictionary.hpp b/storage/ndb/include/ndbapi/NdbDictionary.hpp
index 0687733df03..895bae09ab0 100644
--- a/storage/ndb/include/ndbapi/NdbDictionary.hpp
+++ b/storage/ndb/include/ndbapi/NdbDictionary.hpp
@@ -922,6 +922,14 @@ public:
void setTemporary(bool);
/**
+ * Only table with varpart do support online add column
+ * Add property so that table wo/ varsize column(s) still
+ * allocates varpart-ref, so that later online add column is possible
+ */
+ bool getForceVarPart() const;
+ void setForceVarPart(bool);
+
+ /**
* Check if any of column in bitmaps are disk columns
* returns bitmap of different columns
* bit 0 = atleast 1 pk column is set
diff --git a/storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp b/storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp
index 6d713e53351..89f9db835a1 100644
--- a/storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp
+++ b/storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp
@@ -26,6 +26,7 @@ DictTabInfo::TableMapping[] = {
DTIMAP(Table, PrimaryTableId, PrimaryTableId),
DTIMAP2(Table, TableLoggedFlag, TableLoggedFlag, 0, 1),
DTIMAP2(Table, TableTemporaryFlag, TableTemporaryFlag, 0, 1),
+ DTIMAP2(Table, ForceVarPartFlag, ForceVarPartFlag, 0, 1),
DTIMAP2(Table, TableKValue, TableKValue, 6, 6),
DTIMAP2(Table, MinLoadFactor, MinLoadFactor, 0, 90),
DTIMAP2(Table, MaxLoadFactor, MaxLoadFactor, 25, 110),
@@ -123,6 +124,7 @@ DictTabInfo::Table::init(){
PrimaryTableId = RNIL;
TableLoggedFlag = 1;
TableTemporaryFlag = 0;
+ ForceVarPartFlag = 0;
NoOfKeyAttr = 0;
NoOfAttributes = 0;
NoOfNullable = 0;
diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
index 7a3ecc5c090..cf5d7d06c5f 100644
--- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
+++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
@@ -449,6 +449,8 @@ Dbdict::packTableIntoPages(SimpleProperties::Writer & w,
!!(tablePtr.p->m_bits & TableRecord::TR_RowChecksum));
w.add(DictTabInfo::TableTemporaryFlag,
!!(tablePtr.p->m_bits & TableRecord::TR_Temporary));
+ w.add(DictTabInfo::ForceVarPartFlag,
+ !!(tablePtr.p->m_bits & TableRecord::TR_ForceVarPart));
w.add(DictTabInfo::MinLoadFactor, tablePtr.p->minLoadFactor);
w.add(DictTabInfo::MaxLoadFactor, tablePtr.p->maxLoadFactor);
@@ -5503,8 +5505,8 @@ Dbdict::execADD_FRAGREQ(Signal* signal) {
req->tableType = tabPtr.p->tableType;
req->primaryTableId = tabPtr.p->primaryTableId;
req->tablespace_id= tabPtr.p->m_tablespace_id;
- //req->tablespace_id= tablespace_id;
req->logPartId = logPart;
+ req->forceVarPartFlag = !!(tabPtr.p->m_bits& TableRecord::TR_ForceVarPart);
sendSignal(DBLQH_REF, GSN_LQHFRAGREQ, signal,
LqhFragReq::SignalLength, JBB);
}
@@ -6119,6 +6121,8 @@ void Dbdict::handleTabInfoInit(SimpleProperties::Reader & it,
(c_tableDesc.RowGCIFlag ? TableRecord::TR_RowGCI : 0);
tablePtr.p->m_bits |=
(c_tableDesc.TableTemporaryFlag ? TableRecord::TR_Temporary : 0);
+ tablePtr.p->m_bits |=
+ (c_tableDesc.ForceVarPartFlag ? TableRecord::TR_ForceVarPart : 0);
tablePtr.p->minLoadFactor = c_tableDesc.MinLoadFactor;
tablePtr.p->maxLoadFactor = c_tableDesc.MaxLoadFactor;
tablePtr.p->fragmentType = (DictTabInfo::FragmentType)c_tableDesc.FragmentType;
diff --git a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp
index 839d139a659..9801599fa08 100644
--- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp
+++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp
@@ -236,10 +236,11 @@ public:
/* Is the table logged (i.e. data survives system restart) */
enum Bits
{
- TR_Logged = 0x1,
- TR_RowGCI = 0x2,
- TR_RowChecksum = 0x4,
- TR_Temporary = 0x8
+ TR_Logged = 0x1,
+ TR_RowGCI = 0x2,
+ TR_RowChecksum = 0x4,
+ TR_Temporary = 0x8,
+ TR_ForceVarPart = 0x10
};
Uint16 m_bits;
diff --git a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
index e3026fc59f0..3fc8891c082 100644
--- a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
+++ b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
@@ -459,7 +459,8 @@ public:
Uint32 maxRowsHigh;
Uint32 minRowsLow;
Uint32 minRowsHigh;
- };// Size 128 bytes
+ Uint32 forceVarPartFlag;
+ };
typedef Ptr<AddFragRecord> AddFragRecordPtr;
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ */
diff --git a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
index 869eb6e2689..a359267f9d9 100644
--- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
+++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
@@ -1071,6 +1071,7 @@ void Dblqh::execLQHFRAGREQ(Signal* signal)
Uint32 primaryTableId = req->primaryTableId;
Uint32 tablespace= req->tablespace_id;
Uint32 logPart = req->logPartId;
+ Uint32 forceVarPartFlag = req->forceVarPartFlag;
if (signal->getLength() < 20)
{
@@ -1190,6 +1191,7 @@ void Dblqh::execLQHFRAGREQ(Signal* signal)
addfragptr.p->tableType = tableType;
addfragptr.p->primaryTableId = primaryTableId;
addfragptr.p->tablespace_id= tablespace;
+ addfragptr.p->forceVarPartFlag = forceVarPartFlag;
//
addfragptr.p->tupConnectptr = RNIL;
addfragptr.p->tuxConnectptr = RNIL;
@@ -1340,6 +1342,7 @@ Dblqh::sendAddFragReq(Signal* signal)
tupFragReq->checksumIndicator = addfragptr.p->checksumIndicator;
tupFragReq->globalCheckpointIdIndicator = addfragptr.p->GCPIndicator;
tupFragReq->tablespaceid = addfragptr.p->tablespace_id;
+ tupFragReq->forceVarPartFlag = addfragptr.p->forceVarPartFlag;
sendSignal(fragptr.p->tupBlockref, GSN_TUPFRAGREQ,
signal, TupFragReq::SignalLength, JBB);
return;
diff --git a/storage/ndb/src/ndbapi/NdbDictionary.cpp b/storage/ndb/src/ndbapi/NdbDictionary.cpp
index 47ba0335183..6d548126126 100644
--- a/storage/ndb/src/ndbapi/NdbDictionary.cpp
+++ b/storage/ndb/src/ndbapi/NdbDictionary.cpp
@@ -703,6 +703,16 @@ NdbDictionary::Table::getRowGCIIndicator() const {
return m_impl.m_row_gci;
}
+void
+NdbDictionary::Table::setForceVarPart(bool val){
+ m_impl.m_force_var_part = val;
+}
+
+bool
+NdbDictionary::Table::getForceVarPart() const {
+ return m_impl.m_force_var_part;
+}
+
int
NdbDictionary::Table::aggregate(NdbError& error)
{
diff --git a/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp b/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp
index 76f0cf81823..d19ab74228a 100644
--- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp
+++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp
@@ -2105,6 +2105,7 @@ NdbDictInterface::parseTableInfo(NdbTableImpl ** ret,
impl->m_temporary = tableDesc->TableTemporaryFlag;
impl->m_row_gci = tableDesc->RowGCIFlag;
impl->m_row_checksum = tableDesc->RowChecksumFlag;
+ impl->m_force_var_part = tableDesc->ForceVarPartFlag;
impl->m_kvalue = tableDesc->TableKValue;
impl->m_minLoadFactor = tableDesc->MinLoadFactor;
impl->m_maxLoadFactor = tableDesc->MaxLoadFactor;
@@ -2569,6 +2570,7 @@ NdbDictInterface::createOrAlterTable(Ndb & ndb,
tmpTab->MinRowsLow = (Uint32)(impl.m_min_rows & 0xFFFFFFFF);
tmpTab->DefaultNoPartFlag = impl.m_default_no_part_flag;
tmpTab->LinearHashFlag = impl.m_linear_flag;
+ tmpTab->ForceVarPartFlag = impl.m_force_var_part;
if (impl.m_ts_name.length())
{
diff --git a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp
index 26d7c13f968..68ca4edb5d0 100644
--- a/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp
+++ b/storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp
@@ -199,6 +199,7 @@ public:
bool m_temporary;
bool m_row_gci;
bool m_row_checksum;
+ bool m_force_var_part;
int m_kvalue;
int m_minLoadFactor;
int m_maxLoadFactor;