inline void openOutputFiles() { int i = 0; if (_outputFileBaseName == NULL) { if (_inputFileName == NULL) { _outputFileBaseName = "stdin.csv"; } else { _outputFileBaseName = _inputFileName; } } _outputFiles = malloc(sizeof (FILE*) * _numOutputFiles); for (i = 0; i < _numOutputFiles; i++) { char outputFileName[2048]; sprintf(outputFileName, "%.1024s_%04d", _outputFileBaseName, i); _outputFiles[i] = fopen(outputFileName, "w"); if (_outputFiles[i] == NULL) { fprintf(stderr, "ERROR: Could not open output file '%s' for writing.\n", outputFileName); exit(EXIT_FAILURE); } } allocChunks(); }
void Dbacc::initRecords() { { AllocChunk chunks[16]; const Uint32 pages = (cpagesize + 3) / 4; const Uint32 chunkcnt = allocChunks(chunks, 16, RT_DBTUP_PAGE, pages, CFG_DB_INDEX_MEM); /** * Set base ptr */ Ptr<GlobalPage> pagePtr; m_shared_page_pool.getPtr(pagePtr, chunks[0].ptrI); page8 = (Page8*)pagePtr.p; /** * 1) Build free-list per chunk * 2) Add chunks to cfirstfreepage-list */ cfirstfreepage = RNIL; cpagesize = 0; cpageCount = 0; for (Int32 i = chunkcnt - 1; i >= 0; i--) { Ptr<GlobalPage> pagePtr; m_shared_page_pool.getPtr(pagePtr, chunks[i].ptrI); const Uint32 cnt = 4 * chunks[i].cnt; // 4 8k per 32k Page8* base = (Page8*)pagePtr.p; ndbrequire(base >= page8); const Uint32 ptrI = Uint32(base - page8); for (Uint32 j = 0; j < cnt; j++) { refresh_watch_dog(); base[j].word32[0] = ptrI + j + 1; } base[cnt-1].word32[0] = cfirstfreepage; cfirstfreepage = ptrI; cpageCount += cnt; if (ptrI + cnt > cpagesize) cpagesize = ptrI + cnt; } } operationrec = (Operationrec*)allocRecord("Operationrec", sizeof(Operationrec), coprecsize); dirRange = (DirRange*)allocRecord("DirRange", sizeof(DirRange), cdirrangesize); directoryarray = (Directoryarray*)allocRecord("Directoryarray", sizeof(Directoryarray), cdirarraysize); fragmentrec = (Fragmentrec*)allocRecord("Fragmentrec", sizeof(Fragmentrec), cfragmentsize); overflowRecord = (OverflowRecord*)allocRecord("OverflowRecord", sizeof(OverflowRecord), coverflowrecsize); scanRec = (ScanRec*)allocRecord("ScanRec", sizeof(ScanRec), cscanRecSize); tabrec = (Tabrec*)allocRecord("Tabrec", sizeof(Tabrec), ctablesize); }//Dbacc::initRecords()
void Dblqh::initRecords() { // Records with dynamic sizes addFragRecord = (AddFragRecord*)allocRecord("AddFragRecord", sizeof(AddFragRecord), caddfragrecFileSize); gcpRecord = (GcpRecord*)allocRecord("GcpRecord", sizeof(GcpRecord), cgcprecFileSize); hostRecord = (HostRecord*)allocRecord("HostRecord", sizeof(HostRecord), chostFileSize); lcpRecord = (LcpRecord*)allocRecord("LcpRecord", sizeof(LcpRecord), clcpFileSize); for(Uint32 i = 0; i<clcpFileSize; i++){ new (&lcpRecord[i])LcpRecord(); } logPartRecord = (LogPartRecord*)allocRecord("LogPartRecord", sizeof(LogPartRecord), NDB_MAX_LOG_PARTS); logFileRecord = (LogFileRecord*)allocRecord("LogFileRecord", sizeof(LogFileRecord), clogFileFileSize); logFileOperationRecord = (LogFileOperationRecord*) allocRecord("LogFileOperationRecord", sizeof(LogFileOperationRecord), clfoFileSize); { AllocChunk chunks[16]; const Uint32 chunkcnt = allocChunks(chunks, 16, RG_FILE_BUFFERS, clogPageFileSize, CFG_DB_REDO_BUFFER); { Ptr<GlobalPage> pagePtr; m_shared_page_pool.getPtr(pagePtr, chunks[0].ptrI); logPageRecord = (LogPageRecord*)pagePtr.p; } cfirstfreeLogPage = RNIL; clogPageFileSize = 0; clogPageCount = 0; for (Int32 i = chunkcnt - 1; i >= 0; i--) { const Uint32 cnt = chunks[i].cnt; ndbrequire(cnt != 0); Ptr<GlobalPage> pagePtr; m_shared_page_pool.getPtr(pagePtr, chunks[i].ptrI); LogPageRecord * base = (LogPageRecord*)pagePtr.p; ndbrequire(base >= logPageRecord); const Uint32 ptrI = Uint32(base - logPageRecord); for (Uint32 j = 0; j<cnt; j++) { refresh_watch_dog(); base[j].logPageWord[ZNEXT_PAGE] = ptrI + j + 1; base[j].logPageWord[ZPOS_IN_FREE_LIST]= 1; base[j].logPageWord[ZPOS_IN_WRITING]= 0; } base[cnt-1].logPageWord[ZNEXT_PAGE] = cfirstfreeLogPage; cfirstfreeLogPage = ptrI; clogPageCount += cnt; if (ptrI + cnt > clogPageFileSize) clogPageFileSize = ptrI + cnt; } cnoOfLogPages = clogPageCount; } #ifndef NO_REDO_PAGE_CACHE m_redo_page_cache.m_pool.set((RedoCacheLogPageRecord*)logPageRecord, clogPageFileSize); m_redo_page_cache.m_hash.setSize(63); const Uint32 * base = (Uint32*)logPageRecord; const RedoCacheLogPageRecord* tmp1 = (RedoCacheLogPageRecord*)logPageRecord; ndbrequire(&base[ZPOS_PAGE_NO] == &tmp1->m_page_no); ndbrequire(&base[ZPOS_PAGE_FILE_NO] == &tmp1->m_file_no); #endif #ifndef NO_REDO_OPEN_FILE_CACHE m_redo_open_file_cache.m_pool.set(logFileRecord, clogFileFileSize); #endif pageRefRecord = (PageRefRecord*)allocRecord("PageRefRecord", sizeof(PageRefRecord), cpageRefFileSize); c_scanRecordPool.setSize(cscanrecFileSize); c_scanTakeOverHash.setSize(64); tablerec = (Tablerec*)allocRecord("Tablerec", sizeof(Tablerec), ctabrecFileSize); tcConnectionrec = (TcConnectionrec*)allocRecord("TcConnectionrec", sizeof(TcConnectionrec), ctcConnectrecFileSize); m_commitAckMarkerPool.setSize(ctcConnectrecFileSize); m_commitAckMarkerHash.setSize(1024); tcNodeFailRecord = (TcNodeFailRecord*)allocRecord("TcNodeFailRecord", sizeof(TcNodeFailRecord), ctcNodeFailrecFileSize); /* ndbout << "FRAGREC SIZE = " << sizeof(Fragrecord) << endl; ndbout << "TAB SIZE = " << sizeof(Tablerec) << endl; ndbout << "GCP SIZE = " << sizeof(GcpRecord) << endl; ndbout << "LCP SIZE = " << sizeof(LcpRecord) << endl; ndbout << "LCPLOC SIZE = " << sizeof(LcpLocRecord) << endl; ndbout << "LOGPART SIZE = " << sizeof(LogPartRecord) << endl; ndbout << "LOGFILE SIZE = " << sizeof(LogFileRecord) << endl; ndbout << "TC SIZE = " << sizeof(TcConnectionrec) << endl; ndbout << "HOST SIZE = " << sizeof(HostRecord) << endl; ndbout << "LFO SIZE = " << sizeof(LogFileOperationRecord) << endl; ndbout << "PR SIZE = " << sizeof(PageRefRecord) << endl; ndbout << "SCAN SIZE = " << sizeof(ScanRecord) << endl; */ // Initialize BAT for interface to file system NewVARIABLE* bat = allocateBat(2); bat[1].WA = &logPageRecord->logPageWord[0]; bat[1].nrr = clogPageFileSize; bat[1].ClusterSize = sizeof(LogPageRecord); bat[1].bits.q = ZTWOLOG_PAGE_SIZE; bat[1].bits.v = 5; }//Dblqh::initRecords()