Commit 52295cea authored by unknown's avatar unknown
Browse files

ndb - bug#27756

  testcase only
  new pseudo column NDB$COPY_ROWID


storage/ndb/include/kernel/AttributeHeader.hpp:
  Add new pseudo column for reading location of copy tuple
storage/ndb/include/ndbapi/NdbDictionary.hpp:
  Add new pseudo column for reading location of copy tuple
storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp:
  Add new pseudo column for reading location of copy tuple
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Add new pseudo column for reading location of copy tuple
storage/ndb/src/ndbapi/ndb_cluster_connection.cpp:
  Add new pseudo column for reading location of copy tuple
storage/ndb/test/ndbapi/testBasic.cpp:
  add testcase for bug#27756
parent 01d6b13c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@ public:
  STATIC_CONST( ROW_GCI      = 0xFFF5 );
  STATIC_CONST( FRAGMENT_VARSIZED_MEMORY = 0xFFF4 );

  STATIC_CONST( COPY_ROWID   = 0xFFF1 );
  
  // NOTE: in 5.1 ctors and init take size in bytes

  /** Initialize AttributeHeader at location aHeaderPtr */
+1 −0
Original line number Diff line number Diff line
@@ -534,6 +534,7 @@ public:
    static const Column * RECORDS_IN_RANGE;
    static const Column * ROWID;
    static const Column * ROW_GCI;
    static const Column * COPY_ROWID;
    
    int getSizeInBytes() const;
#endif
+4 −0
Original line number Diff line number Diff line
@@ -1198,6 +1198,10 @@ Dbtup::read_pseudo(Uint32 attrId,
      return 2;
    }
    return 0;
  case AttributeHeader::COPY_ROWID:
    outBuffer[0] = operPtr.p->m_copy_tuple_location.m_page_no;
    outBuffer[0] = operPtr.p->m_copy_tuple_location.m_page_idx;
    return 2;
  default:
    return 0;
  }
+6 −0
Original line number Diff line number Diff line
@@ -378,6 +378,11 @@ NdbColumnImpl::create_pseudo(const char * name){
    col->m_impl.m_attrSize = 8;
    col->m_impl.m_arraySize = 1;
    col->m_impl.m_nullable = true;
  } else if(!strcmp(name, "NDB$COPY_ROWID")){
    col->setType(NdbDictionary::Column::Bigunsigned);
    col->m_impl.m_attrId = AttributeHeader::COPY_ROWID;
    col->m_impl.m_attrSize = 4;
    col->m_impl.m_arraySize = 2;
  } else {
    abort();
  }
@@ -5089,3 +5094,4 @@ const NdbDictionary::Column * NdbDictionary::Column::DISK_REF = 0;
const NdbDictionary::Column * NdbDictionary::Column::RECORDS_IN_RANGE = 0;
const NdbDictionary::Column * NdbDictionary::Column::ROWID = 0;
const NdbDictionary::Column * NdbDictionary::Column::ROW_GCI = 0;
const NdbDictionary::Column * NdbDictionary::Column::COPY_ROWID = 0;
+5 −0
Original line number Diff line number Diff line
@@ -326,6 +326,8 @@ Ndb_cluster_connection_impl::Ndb_cluster_connection_impl(const char *
      NdbColumnImpl::create_pseudo("NDB$ROWID");
    NdbDictionary::Column::ROW_GCI= 
      NdbColumnImpl::create_pseudo("NDB$ROW_GCI");
    NdbDictionary::Column::COPY_ROWID= 
      NdbColumnImpl::create_pseudo("NDB$COPY_ROWID");
  }
  NdbMutex_Unlock(g_ndb_connection_mutex);

@@ -391,6 +393,9 @@ Ndb_cluster_connection_impl::~Ndb_cluster_connection_impl()
    NdbDictionary::Column::RECORDS_IN_RANGE= 0;
    NdbDictionary::Column::ROWID= 0;
    NdbDictionary::Column::ROW_GCI= 0;

    delete NdbDictionary::Column::COPY_ROWID;
    NdbDictionary::Column::COPY_ROWID = 0;
  }
  NdbMutex_Unlock(g_ndb_connection_mutex);

Loading