bool Writer::BlockTableExists() { std::ostringstream oss; std::string block_table_name = getOptions().getValueOrThrow<std::string>("block_table_name"); char szTable[OWNAME]= ""; oss << "select table_name from user_tables"; log()->get(logDEBUG) << "checking for " << block_table_name << " existence ... " ; Statement statement = Statement(m_connection->CreateStatement(oss.str().c_str())); // Because of OCIGDALErrorHandler, this is going to throw if there is a // problem. When it does, the statement should go out of scope and // be destroyed without leaking. statement->Define(szTable); statement->Execute(); log()->get(logDEBUG) << "checking ... " << szTable ; bool bDidRead(true); while (bDidRead) { log()->get(logDEBUG) << ", " << szTable; if (boost::iequals(szTable, block_table_name)) { log()->get(logDEBUG) << " -- '" << block_table_name << "' found." <<std::endl; return true; } bDidRead = statement->Fetch(); } log()->get(logDEBUG) << " -- '" << block_table_name << "' not found." << std::endl; return false; }
// Read a block (set of points) from the database. bool OciReader::readOci(Statement stmt, BlockPtr block) { if (!block->fetched()) { if (!stmt->Fetch()) { m_atEnd = true; return false; } block->setFetched(); } // Read the points from the blob in the row. readBlob(stmt, block); XMLSchema *s = findSchema(stmt, block); updateSchema(*s); MetadataNode comp = s->getMetadata().findChild("compression"); m_compression = (comp.value() == "lazperf"); block->reset(); block->clearFetched(); return true; }