Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • thomasb/tardisdb
  • tardisDB/tardisdb
2 results
Show changes
Showing
with 1160 additions and 56 deletions
......@@ -4,23 +4,28 @@
#include "algebra/physical/TableScan.hpp"
#include <map>
#include <llvm/IR/TypeBuilder.h>
#include "foundations/version_management.hpp"
#include <unordered_map>
#include "codegen/PhiNode.hpp"
#include "sql/SqlUtils.hpp"
#include "sql/SqlTuple.hpp"
using namespace Sql;
namespace Algebra {
namespace Physical {
TableScan::TableScan(const logical_operator_t & logicalOperator, Table & table) :
NullaryOperator(std::move(logicalOperator)),
table(table)
TableScan::TableScan(const logical_operator_t & logicalOperator, Table & table, branch_id_t branchId, QueryContext &queryContext) :
NullaryOperator(std::move(logicalOperator), queryContext),
table(table),
branchId(branchId)
{
// collect all information which is necessary to access the columns
for (auto iu : getRequired()) {
auto ci = getColumnInformation(iu);
if (ci->columnName.compare("tid") == 0) {
continue;
}
SqlType storedSqlType;
if (ci->type.nullable) {
......@@ -34,8 +39,15 @@ TableScan::TableScan(const logical_operator_t & logicalOperator, Table & table)
llvm::Type * elemTy = toLLVMTy(storedSqlType);
llvm::Type * columnTy = llvm::ArrayType::get(elemTy, tableSize);
llvm::Value * columnPtr = createPointerValue(ci->column->front(), columnTy);
size_t columnIndex = 0;
for (int i = 0; i<table.getColumnCount(); i++) {
if (table.getColumnNames()[i].compare(ci->columnName) == 0) {
columnIndex = i;
break;
}
}
columns.emplace_back(ci, columnTy, columnPtr);
columns.emplace_back(ci, columnTy, columnPtr, columnIndex, nullptr);
}
}
......@@ -47,68 +59,194 @@ void TableScan::produce()
auto & funcGen = _codeGen.getCurrentFunctionGen();
size_t tableSize = table.size();
if (tableSize < 1) {
return; // nothing to produce
}
if (tableSize < 1) return; // nothing to produce
// iterate over all tuples
#ifdef __APPLE__
LoopGen scanLoop(funcGen, {{"index", cg_size_t(0ull)}});
#else
LoopGen scanLoop(funcGen, {{"index", cg_size_t(0ul)}});
#endif
cg_size_t tid(scanLoop.getLoopVar(0));
{
LoopBodyGen bodyGen(scanLoop);
auto branchId = _context.executionContext.branchId;
#if USE_DATA_VERSIONING
IfGen visibilityCheck(isVisible(tid, branchId));
{
produce(tid);
produce(tid, branchId);
}
visibilityCheck.EndIf();
#else
produce(tid);
#endif
}
cg_size_t nextIndex = tid + 1ul;
scanLoop.loopDone(nextIndex < tableSize, {nextIndex});
}
void TableScan::produce(cg_tid_t tid)
{
#if USE_DATA_VERSIONING
void TableScan::produce(cg_tid_t tid, branch_id_t branchId) {
iu_value_mapping_t values;
std::vector<value_op_t> sqlValues;
// get null indicator column data
auto & nullIndicatorTable = table.getNullIndicatorTable();
iu_set_t required = getRequired();
cg_voidptr_t resultPtr;
cg_bool_t ptrIsNotNull(false);
if (branchId != master_branch_id) {
resultPtr = genGetLatestEntryCall(tid,branchId);
ptrIsNotNull = nullPointerCheck(resultPtr);
}
size_t i = 0;
for (auto iu : required) {
column_t & column = columns[i];
ci_p_t ci = std::get<0>(column);
// the final value
value_op_t sqlValue;
if (iu->columnInformation->columnName.compare("tid") == 0) {
//Add tid to the produced values
llvm::Value *tidValue = tid.getValue();
tidSqlValue = std::make_unique<LongInteger>(tidValue);
values[iu] = tidSqlValue.get();
} else {
column_t & column = columns[i];
ci_p_t ci = std::get<0>(column);
// calculate the SQL value pointer
llvm::Value * elemPtr = _codeGen->CreateGEP(
std::get<1>(column), std::get<2>(column), { cg_size_t(0ul), tid });
llvm::Value *elemPtr;
if (branchId != master_branch_id) {
elemPtr = getBranchElemPtr(tid,column,resultPtr,ptrIsNotNull);
} else {
elemPtr = getMasterElemPtr(tid,column);
}
// calculate the SQL value pointer
if (ci->type.nullable) {
assert(ci->nullIndicatorType == ColumnInformation::NullIndicatorType::Column);
// load null indicator
cg_bool_t isNull = genNullIndicatorLoad(nullIndicatorTable, tid, cg_unsigned_t(ci->nullColumnIndex));
SqlType notNullableType = toNotNullableTy(ci->type);
auto loadedValue = Value::load(elemPtr, notNullableType);
std::get<4>(column) = NullableValue::create(std::move(loadedValue), isNull);
} else {
// load the SQL value
std::get<4>(column) = Value::load(elemPtr, ci->type);
}
// map the value to the according iu
values[iu] = std::get<4>(column).get();
i += 1;
}
}
_parent->consume(values, *this);
}
#else
void TableScan::produce(cg_tid_t tid) {
iu_value_mapping_t values;
// get null indicator column data
auto & nullIndicatorTable = table.getNullIndicatorTable();
iu_set_t required = getRequired();
size_t i = 0;
for (auto iu : required) {
// the final value
value_op_t sqlValue;
if (ci->type.nullable) {
assert(ci->nullIndicatorType == ColumnInformation::NullIndicatorType::Column);
// load null indicator
cg_bool_t isNull = genNullIndicatorLoad(nullIndicatorTable, tid, cg_unsigned_t(ci->nullColumnIndex));
SqlType notNullableType = toNotNullableTy(ci->type);
auto loadedValue = Value::load(elemPtr, notNullableType);
sqlValue = NullableValue::create(std::move(loadedValue), isNull);
if (iu->columnInformation->columnName.compare("tid") == 0) {
//Add tid to the produced values
llvm::Value *tidValue = tid.getValue();
tidSqlValue = std::make_unique<LongInteger>(tidValue);
values[iu] = tidSqlValue.get();
} else {
// load the SQL value
sqlValue = Value::load(elemPtr, ci->type);
}
column_t & column = columns[i];
ci_p_t ci = std::get<0>(column);
// map the value to the according iu
values[iu] = sqlValue.get();
sqlValues.push_back( std::move(sqlValue) );
llvm::Value *elemPtr = getMasterElemPtr(tid,column);
i += 1;
// calculate the SQL value pointer
if (ci->type.nullable) {
assert(ci->nullIndicatorType == ColumnInformation::NullIndicatorType::Column);
// load null indicator
cg_bool_t isNull = genNullIndicatorLoad(nullIndicatorTable, tid, cg_unsigned_t(ci->nullColumnIndex));
SqlType notNullableType = toNotNullableTy(ci->type);
auto loadedValue = Value::load(elemPtr, notNullableType);
std::get<4>(column) = NullableValue::create(std::move(loadedValue), isNull);
} else {
// load the SQL value
std::get<4>(column) = Value::load(elemPtr, ci->type);
}
// map the value to the according iu
values[iu] = std::get<4>(column).get();
i += 1;
}
}
_parent->consume(values, *this);
}
#endif
llvm::Value *TableScan::getMasterElemPtr(cg_tid_t &tid, column_t &column) {
#ifdef __APPLE__
llvm::Value * elemPtr = _codeGen->CreateGEP(std::get<1>(column), std::get<2>(column), { cg_size_t(0ull), tid });
#else
llvm::Value * elemPtr = _codeGen->CreateGEP(std::get<1>(column), std::get<2>(column), { cg_size_t(0ul), tid });
#endif
return elemPtr;
}
llvm::Value *TableScan::getBranchElemPtr(cg_tid_t &tid, column_t &column, cg_voidptr_t &resultPtr, cg_bool_t &ptrIsNotNull) {
IfGen check( _codeGen.getCurrentFunctionGen(), ptrIsNotNull, {{"elemPtr", cg_int_t(0)}} );
{
llvm::Value * valuePtr = tupleToElemPtr(resultPtr,column);
check.setVar(0, valuePtr);
}
check.Else();
{
llvm::Value *elemPtr = getMasterElemPtr(tid,column);
check.setVar(0, elemPtr);
}
check.EndIf();
return check.getResult(0);
}
cg_voidptr_t TableScan::genGetLatestEntryCall(cg_tid_t tid, branch_id_t branchId) {
llvm::FunctionType * funcTy = llvm::TypeBuilder<void * (size_t, void * , void* , void *), false>::get(_codeGen.getLLVMContext());
llvm::Function * func = llvm::cast<llvm::Function>( getThreadLocalCodeGen().getCurrentModuleGen().getModule().getOrInsertFunction("get_latest_entry", funcTy) );
getThreadLocalCodeGen().getCurrentModuleGen().addFunctionMapping(func,(void *)&get_latest_entry);
llvm::CallInst * result = _codeGen->CreateCall(func, {tid, cg_ptr8_t::fromRawPointer(&table), cg_u32_t(branchId), _codeGen.getCurrentFunctionGen().getArg(1)});
return cg_voidptr_t( llvm::cast<llvm::Value>(result) );
}
cg_bool_t TableScan::nullPointerCheck(cg_voidptr_t &ptr) {
#ifdef __APPLE__
return cg_bool_t(cg_size_t(_codeGen->CreatePtrToInt(ptr, _codeGen->getIntNTy(64))) != cg_size_t(0ull));
#else
return cg_bool_t(cg_size_t(_codeGen->CreatePtrToInt(ptr, _codeGen->getIntNTy(64))) != cg_size_t(0ul));
#endif
}
llvm::Value *TableScan::tupleToElemPtr(cg_voidptr_t &ptr, column_t &column) {
llvm::Type * tupleTy = Sql::SqlTuple::getType(table.getTupleType());
llvm::Type * tuplePtrTy = llvm::PointerType::getUnqual(tupleTy);
llvm::Value * tuplePtr = _codeGen->CreatePointerCast(ptr, tuplePtrTy);
return _codeGen->CreateStructGEP(tupleTy, tuplePtr, std::get<3>(column));
}
cg_bool_t TableScan::isVisible(cg_tid_t tid, cg_branch_id_t branchId)
{
......
......@@ -3,6 +3,7 @@
#include "algebra/physical/Operator.hpp"
#include "foundations/Database.hpp"
#include "sql/SqlValues.hpp"
namespace Algebra {
namespace Physical {
......@@ -10,21 +11,34 @@ namespace Physical {
/// The table scan operator
class TableScan : public NullaryOperator {
public:
TableScan(const logical_operator_t & logicalOperator, Table & table);
TableScan(const logical_operator_t & logicalOperator, Table & table, branch_id_t branchId, QueryContext &queryContext);
virtual ~TableScan();
void produce() override;
#if USE_DATA_VERSIONING
void produce(cg_tid_t tid, branch_id_t branchId);
#else
void produce(cg_tid_t tid);
#endif
private:
using column_t = std::tuple<ci_p_t, llvm::Type *, llvm::Value *, size_t, Sql::value_op_t>;
cg_voidptr_t genGetLatestEntryCall(cg_tid_t tid, branch_id_t branchId);
cg_bool_t nullPointerCheck(cg_voidptr_t &pointer);
llvm::Value *tupleToElemPtr(cg_voidptr_t &ptr, column_t &column);
cg_bool_t isVisible(cg_tid_t tid, cg_branch_id_t branchId);
llvm::Value *getMasterElemPtr(cg_tid_t &tid, column_t &column);
llvm::Value *getBranchElemPtr(cg_tid_t &tid, column_t &column, cg_voidptr_t &resultPtr, cg_bool_t &ptrIsNotNull);
Table & table;
branch_id_t branchId;
using column_t = std::tuple<ci_p_t, llvm::Type *, llvm::Value *>;
std::vector<column_t> columns;
Sql::value_op_t tidSqlValue;
};
} // end namespace Physical
......
//
// Created by Blum Thomas on 2020-06-16.
//
#include <llvm/IR/TypeBuilder.h>
#include "TupleStream.hpp"
#include "sql/SqlUtils.hpp"
#include "sql/ValueTranslator.hpp"
using namespace Sql;
namespace Algebra {
namespace Physical {
TupleStream::TupleStream(const logical_operator_t & logicalOperator, std::unique_ptr<Operator> input, QueryContext &queryContext) :
UnaryOperator(std::move(logicalOperator), std::move(input), queryContext)
{
for (auto &iu : _logicalOperator.getRequired()) {
auto ci = getColumnInformation(iu);
if (ci->columnName.compare("tid") == 0) {
continue;
}
columns.emplace_back(iu);
}
}
TupleStream::~TupleStream()
{ }
void TupleStream::produce()
{
tupleCountPtr = _codeGen->CreateAlloca(cg_size_t::getType());
#ifdef __APPLE__
_codeGen->CreateStore(cg_size_t(0ull), tupleCountPtr);
#else
_codeGen->CreateStore(cg_size_t(0ul), tupleCountPtr);
#endif
child->produce();
}
void TupleStream::consume(const iu_value_mapping_t & values, const Operator & src)
{
std::vector<Sql::Value*> tupleValues;
for (auto &column : columns) {
tupleValues.emplace_back(values.at(std::get<0>(column)));
}
// Convert the Sql::Value to Native::Sql::Value
std::vector<std::unique_ptr<Native::Sql::Value>> nativeValues;
for (auto &value : tupleValues) {
nativeValues.emplace_back(ValueTranslator::sqlValueToNativeSqlValue(value));
}
// Create a Native::Sql::Tuple needed by the update_tuple function in version_management.hpp
Native::Sql::SqlTuple* nativetuple = new Native::Sql::SqlTuple(std::move(nativeValues));
// Call the update_tuple function in version_management.hpp
genCallbackCall(nativetuple);
// increment tuple counter
cg_size_t prevCnt(_codeGen->CreateLoad(tupleCountPtr));
_codeGen->CreateStore(prevCnt + 1ul, tupleCountPtr);
}
void TupleStream::genCallbackCall(Native::Sql::SqlTuple* nativetuple) {
llvm::FunctionType * funcUpdateTupleTy = llvm::TypeBuilder<void (void *), false>::get(_codeGen.getLLVMContext());
llvm::Function * func = llvm::cast<llvm::Function>( getThreadLocalCodeGen().getCurrentModuleGen().getModule().getOrInsertFunction("callHandler", funcUpdateTupleTy) );
_codeGen->CreateCall(func, {cg_ptr8_t::fromRawPointer(nativetuple)});
}
} // end namespace Physical
} // end namespace Algebra
\ No newline at end of file
//
// Created by Blum Thomas on 2020-06-16.
//
#ifndef PROTODB_TUPLESTREAM_HPP
#define PROTODB_TUPLESTREAM_HPP
#include "algebra/physical/Operator.hpp"
namespace Algebra {
namespace Physical {
/// The print operator
class TupleStream : public UnaryOperator {
public:
TupleStream(const logical_operator_t & logicalOperator, std::unique_ptr<Operator> input, QueryContext &queryContext);
virtual ~TupleStream();
void produce() override;
void consume(const iu_value_mapping_t & values, const Operator & src) override;
private:
void genCallbackCall(Native::Sql::SqlTuple* nativetuple);
using column_t = std::tuple<iu_p_t>;
std::vector<column_t> columns;
llvm::Value * tupleCountPtr;
};
} // end namespace Physical
} // end namespace Algebra
#endif //PROTODB_TUPLESTREAM_HPP
//
// Created by josef on 03.01.17.
//
#include <llvm/IR/TypeBuilder.h>
#include "algebra/physical/Update.hpp"
#include "sql/SqlUtils.hpp"
#include "sql/SqlValues.hpp"
#include "sql/SqlTuple.hpp"
#include "foundations/version_management.hpp"
#include "sql/ValueTranslator.hpp"
using namespace Sql;
namespace Algebra {
namespace Physical {
Update::Update(const logical_operator_t & logicalOperator, std::unique_ptr<Operator> input, Table & table,
std::vector<std::pair<iu_p_t,std::string>> &updateIUs, branch_id_t branchId, QueryContext &queryContext) :
UnaryOperator(std::move(logicalOperator), std::move(input), queryContext) , table(table),
_updateIUs(std::move(updateIUs)), branchId(branchId)
{
// collect all information which is necessary to access the columns
for (auto &iuPairs : _updateIUs) {
auto ci = getColumnInformation(iuPairs.first);
if (ci->columnName.compare("tid") == 0) {
continue;
}
SqlType storedSqlType;
if (ci->type.nullable) {
// the null indicator will be stored in the NullIndicatorTable
storedSqlType = toNotNullableTy( ci->type );
} else {
storedSqlType = ci->type;
}
std::unique_ptr<Sql::Value> sqlValue = nullptr;
if (iuPairs.second.compare("") != 0) {
sqlValue = Sql::Value::castString(iuPairs.second,storedSqlType);
}
size_t tableSize = table.size();
llvm::Type * elemTy = toLLVMTy(storedSqlType);
llvm::Type * columnTy = llvm::ArrayType::get(elemTy, tableSize);
llvm::Value * columnPtr = createPointerValue(ci->column->front(), columnTy);
size_t columnIndex = 0;
for (int i = 0; i<table.getColumnCount(); i++) {
if (table.getColumnNames()[i].compare(ci->columnName) == 0) {
columnIndex = i;
break;
}
}
columns.emplace_back(ci, columnTy, columnPtr, columnIndex, std::move(sqlValue));
}
}
Update::~Update()
{ }
void Update::produce()
{
tupleCountPtr = _codeGen->CreateAlloca(cg_size_t::getType());
#ifdef __APPLE__
_codeGen->CreateStore(cg_size_t(0ull), tupleCountPtr);
#else
_codeGen->CreateStore(cg_size_t(0ul), tupleCountPtr);
#endif
child->produce();
cg_size_t tupleCnt(_codeGen->CreateLoad(tupleCountPtr));
//Functions::genPrintfCall("Updated %lu tuples\n", tupleCnt);
}
void Update::consume(const iu_value_mapping_t & values, const Operator & src)
{
// Get the tid of the consumed tuple
cg_size_t tid;
for (auto &iuPair : _updateIUs) {
if (iuPair.first->columnInformation->columnName.compare("tid") == 0) {
tid = cg_size_t(values.at(iuPair.first)->getLLVMValue());
break;
}
}
#if USE_DATA_VERSIONING
// Collect all values needed for the row tuple in correct order
std::vector<Sql::Value*> tupleValues;
std::sort(columns.begin(), columns.end(), sortColumns);
for (auto &column : columns) {
for (auto &iuPair : _updateIUs) {
if (iuPair.first->columnInformation->columnName.compare(std::get<0>(column)->columnName) == 0) {
// If tuple value needs to be updated take the value offered by the operator; Else take the value pushed up in the tree
std::unique_ptr<Sql::Value> &updateValue = std::get<4>(column);
if (updateValue != nullptr) {
tupleValues.emplace_back(updateValue.get());
} else {
tupleValues.emplace_back(values.at(iuPair.first));
}
break;
}
}
}
// Convert the Sql::Value to Native::Sql::Value
std::vector<std::unique_ptr<Native::Sql::Value>> nativeValues;
for (auto &value : tupleValues) {
nativeValues.emplace_back(ValueTranslator::sqlValueToNativeSqlValue(value));
}
// Create a Native::Sql::Tuple needed by the update_tuple function in version_management.hpp
Native::Sql::SqlTuple* nativetuple = new Native::Sql::SqlTuple(std::move(nativeValues));
// Call the update_tuple function in version_management.hpp
genUpdateCall(tid,nativetuple);
#else
for (auto &column : columns) {
Sql::Value *sqlValue = std::get<4>(column).get();
if (sqlValue == nullptr) continue;
// calculate the SQL value pointer
#ifdef __APPLE__
llvm::Value * elemPtr = _codeGen->CreateGEP(std::get<1>(column), std::get<2>(column), { cg_size_t(0ull), tid });
#else
llvm::Value * elemPtr = _codeGen->CreateGEP(std::get<1>(column), std::get<2>(column), { cg_size_t(0ul), tid });
#endif
// map the value to the according iu
// Store the new value at desired position
sqlValue->store(elemPtr);
}
#endif
// increment tuple counter
cg_size_t prevCnt(_codeGen->CreateLoad(tupleCountPtr));
_codeGen->CreateStore(prevCnt + 1ul, tupleCountPtr);
}
void Update::genUpdateCall(cg_size_t tid, Native::Sql::SqlTuple* nativetuple) {
llvm::FunctionType * funcUpdateTupleTy = llvm::TypeBuilder<void * (size_t, void *, void * , void *, void *), false>::get(_codeGen.getLLVMContext());
llvm::Function * func = llvm::cast<llvm::Function>( getThreadLocalCodeGen().getCurrentModuleGen().getModule().getOrInsertFunction("update_tuple_with_binding", funcUpdateTupleTy) );
getThreadLocalCodeGen().getCurrentModuleGen().addFunctionMapping(func,(void *)&update_tuple_with_branchId);
_codeGen->CreateCall(func, {tid, cg_u32_t(branchId), cg_ptr8_t::fromRawPointer(nativetuple), cg_ptr8_t::fromRawPointer(&table), _codeGen.getCurrentFunctionGen().getArg(1)});
}
} // end namespace Physical
} // end namespace Algebra
#ifndef PROTODB_UPDATE_HPP
#define PROTODB_UPDATE_HPP
#include "algebra/physical/Operator.hpp"
namespace Algebra {
namespace Physical {
/// The print operator
class Update : public UnaryOperator {
public:
Update(const logical_operator_t & logicalOperator, std::unique_ptr<Operator> input, Table & table,
std::vector<std::pair<iu_p_t,std::string>> &updateIUs, branch_id_t branchId, QueryContext &queryContext);
virtual ~Update();
void produce() override;
void consume(const iu_value_mapping_t & values, const Operator & src) override;
private:
std::vector<std::pair<iu_p_t,std::string>> _updateIUs;
Table & table;
branch_id_t branchId;
llvm::Value * tupleCountPtr;
using column_t = std::tuple<ci_p_t, llvm::Type *, llvm::Value *, size_t, std::unique_ptr<Sql::Value>>;
std::vector<column_t> columns;
static bool sortColumns(column_t& a, column_t& b) {
return (std::get<3>(a) < std::get<3>(b));
}
void genUpdateCall(cg_size_t tid, Native::Sql::SqlTuple* nativetuple);
};
} // end namespace Physical
} // end namespace Algebra
#endif //PROTODB_UPDATE_HPP
......@@ -8,3 +8,7 @@
#include "Print.hpp"
#include "Select.hpp"
#include "TableScan.hpp"
#include "Update.hpp"
#include "Delete.hpp"
#include "Insert.hpp"
#include "TupleStream.hpp"
\ No newline at end of file
......@@ -205,9 +205,10 @@ private:
struct AggregatorTranslator : public Logical::Aggregations::AggregatorVisitor {
std::unique_ptr<Physical::Aggregations::Aggregator> _result;
Logical::Aggregations::Aggregator & _input;
QueryContext &_queryContext;
AggregatorTranslator(Logical::Aggregations::Aggregator & input) :
_input(input)
AggregatorTranslator(Logical::Aggregations::Aggregator & input, QueryContext &queryContext) :
_input(input) , _queryContext(queryContext)
{
input.accept(*this);
}
......@@ -219,7 +220,7 @@ struct AggregatorTranslator : public Logical::Aggregations::AggregatorVisitor {
throw InvalidOperationException("'keep' should only require one iu");
}
_result = std::make_unique<Physical::Aggregations::Keep>(
_input.getContext(), _input.getProduced(), *required.begin()
_queryContext, _input.getProduced(), *required.begin()
);
}
......@@ -228,7 +229,7 @@ struct AggregatorTranslator : public Logical::Aggregations::AggregatorVisitor {
ExpressionTranslator expressionTranslator(aggregator.getExpression());
physical_expression_op_t physicalExpression = expressionTranslator.getResult();
_result = std::make_unique<Physical::Aggregations::Sum>(
_input.getContext(), _input.getProduced(), std::move(physicalExpression)
_queryContext, _input.getProduced(), std::move(physicalExpression)
);
}
......@@ -237,13 +238,13 @@ struct AggregatorTranslator : public Logical::Aggregations::AggregatorVisitor {
ExpressionTranslator expressionTranslator(aggregator.getExpression());
physical_expression_op_t physicalExpression = expressionTranslator.getResult();
_result = std::make_unique<Physical::Aggregations::Avg>(
_input.getContext(), _input.getProduced(), std::move(physicalExpression)
_queryContext, _input.getProduced(), std::move(physicalExpression)
);
}
void visit(Logical::Aggregations::CountAll & aggregator) override
{
_result = std::make_unique<Physical::Aggregations::CountAll>(_input.getContext(), _input.getProduced());
_result = std::make_unique<Physical::Aggregations::CountAll>(_queryContext, _input.getProduced());
}
void visit(Logical::Aggregations::Min & aggregator) override
......@@ -251,14 +252,14 @@ struct AggregatorTranslator : public Logical::Aggregations::AggregatorVisitor {
ExpressionTranslator expressionTranslator(aggregator.getExpression());
physical_expression_op_t physicalExpression = expressionTranslator.getResult();
_result = std::make_unique<Physical::Aggregations::Min>(
_input.getContext(), _input.getProduced(), std::move(physicalExpression)
_queryContext, _input.getProduced(), std::move(physicalExpression)
);
}
};
static physical_aggregator_op_t translateAggregator(Logical::Aggregations::Aggregator & aggregator)
static physical_aggregator_op_t translateAggregator(Logical::Aggregations::Aggregator & aggregator, QueryContext &queryContext)
{
AggregatorTranslator translator(aggregator);
AggregatorTranslator translator(aggregator,queryContext);
return std::move(translator._result);
}
......@@ -268,8 +269,9 @@ static physical_aggregator_op_t translateAggregator(Logical::Aggregations::Aggre
class TreeTranslator : public Logical::OperatorVisitor {
public:
std::stack<physical_operator_op_t> _translated;
QueryContext &_queryContext;
TreeTranslator(const Logical::Operator & root)
TreeTranslator(const Logical::Operator & root, QueryContext &queryContext) : _queryContext(queryContext)
{
// I won't change anything. I promise.
// The alternative would be a const version of OperatorVisitor.
......@@ -317,13 +319,14 @@ public:
std::vector<physical_aggregator_op_t> aggregations;
for (auto & logicalAggregator : op._aggregations) {
aggregations.push_back( translateAggregator(*logicalAggregator) );
aggregations.push_back( translateAggregator(*logicalAggregator,_queryContext) );
}
_translated.push( std::make_unique<Physical::GroupBy>(
op,
std::move(child),
std::move(aggregations)
std::move(aggregations),
_queryContext
) );
}
......@@ -360,7 +363,8 @@ public:
op,
std::move(leftChild),
std::move(rightChild),
std::move(joinPairs)
std::move(joinPairs),
_queryContext
) );
break;
}
......@@ -374,6 +378,47 @@ public:
throw NotImplementedException();
}
void visit(Logical::Insert & op) override
{
_translated.push( std::make_unique<Physical::Insert>(
op,
op.getTable(),
op.getTuple(),
_queryContext,
op.getBranchId()
) );
}
void visit(Logical::Update & op) override
{
auto child = std::move(_translated.top());
_translated.pop();
_translated.push( std::make_unique<Physical::Update>(
op,
std::move(child),
op.getTable(),
op.getUpdateIUValuePairs(),
op.getBranchId(),
_queryContext
) );
}
void visit(Logical::Delete & op) override
{
auto child = std::move(_translated.top());
_translated.pop();
_translated.push( std::make_unique<Physical::Delete>(
op,
std::move(child),
op.getTIDIU(),
op.getTable(),
_queryContext,
op.getBranchId()
));
}
void visit(Logical::Result & op) override
{
auto child = std::move(_translated.top());
......@@ -382,8 +427,17 @@ public:
switch (op._type) {
case Logical::Result::Type::PrintToStdOut: {
_translated.push( std::make_unique<Physical::Print>(
op,
std::move(child)
op,
std::move(child),
_queryContext
) );
break;
}
case Logical::Result::Type::TupleStreamHandler: {
_translated.push( std::make_unique<Physical::TupleStream>(
op,
std::move(child),
_queryContext
) );
break;
}
......@@ -403,7 +457,8 @@ public:
_translated.push( std::make_unique<Physical::Select>(
op,
std::move(child),
std::move(exp)
std::move(exp),
_queryContext
) );
}
......@@ -411,15 +466,17 @@ public:
{
_translated.push( std::make_unique<Physical::TableScan>(
op,
op.getTable()
op.getTable(),
op.getBranchId(),
_queryContext
) );
}
};
std::unique_ptr<Physical::Operator> translateToPhysicalTree(const Logical::Result & resultOperator)
std::unique_ptr<Physical::Operator> translateToPhysicalTree(const Logical::Operator & resultOperator, QueryContext &queryContext)
{
TreeTranslator t(resultOperator);
TreeTranslator t(resultOperator,queryContext);
return t.getResult();
}
......
......@@ -10,6 +10,6 @@ namespace Algebra {
/// \note This function must only be used inside a code generation context.
/// This means that there already has to be a valid ModuleGen available within the current context.
std::unique_ptr<Physical::Operator> translateToPhysicalTree(const Logical::Result & resultOperator);
std::unique_ptr<Physical::Operator> translateToPhysicalTree(const Logical::Operator & resultOperator, QueryContext &queryContext);
} // end namespace Algebra
DELETE FROM page VERSION branch1 WHERE id = 2051 ;
DELETE FROM page VERSION branch1 WHERE id = 443 ;
DELETE FROM page VERSION branch1 WHERE id = 857 ;
DELETE FROM page VERSION branch1 WHERE id = 429 ;
DELETE FROM page VERSION branch1 WHERE id = 195 ;
DELETE FROM page VERSION branch1 WHERE id = 539 ;
DELETE FROM page VERSION branch1 WHERE id = 1764 ;
DELETE FROM page VERSION branch1 WHERE id = 414 ;
DELETE FROM page VERSION branch1 WHERE id = 436 ;
DELETE FROM page VERSION branch1 WHERE id = 1957 ;
DELETE FROM page VERSION branch1 WHERE id = 1407 ;
DELETE FROM page VERSION branch1 WHERE id = 1862 ;
DELETE FROM page VERSION branch1 WHERE id = 1547 ;
DELETE FROM page VERSION branch1 WHERE id = 1587 ;
DELETE FROM page VERSION branch1 WHERE id = 1535 ;
DELETE FROM page VERSION branch1 WHERE id = 1780 ;
DELETE FROM page VERSION branch1 WHERE id = 112 ;
DELETE FROM page VERSION branch1 WHERE id = 1779 ;
DELETE FROM page VERSION branch1 WHERE id = 2073 ;
DELETE FROM page VERSION branch1 WHERE id = 861 ;
DELETE FROM page VERSION branch1 WHERE id = 959 ;
DELETE FROM page VERSION branch1 WHERE id = 1358 ;
DELETE FROM page VERSION branch1 WHERE id = 1073 ;
DELETE FROM page VERSION branch1 WHERE id = 513 ;
DELETE FROM page VERSION branch1 WHERE id = 1842 ;
quit
DELETE FROM page VERSION branch1 WHERE id = 23923115 ;
DELETE FROM page VERSION branch1 WHERE id = 23916612 ;
DELETE FROM page VERSION branch1 WHERE id = 23911478 ;
DELETE FROM page VERSION branch1 WHERE id = 23915702 ;
DELETE FROM page VERSION branch1 WHERE id = 23911020 ;
DELETE FROM page VERSION branch1 WHERE id = 23918670 ;
DELETE FROM page VERSION branch1 WHERE id = 23918060 ;
DELETE FROM page VERSION branch1 WHERE id = 23923995 ;
DELETE FROM page VERSION branch1 WHERE id = 23920757 ;
DELETE FROM page VERSION branch1 WHERE id = 23913424 ;
DELETE FROM page VERSION branch1 WHERE id = 23922743 ;
DELETE FROM page VERSION branch1 WHERE id = 23913809 ;
DELETE FROM page VERSION branch1 WHERE id = 23918391 ;
DELETE FROM page VERSION branch1 WHERE id = 23915595 ;
DELETE FROM page VERSION branch1 WHERE id = 23926025 ;
DELETE FROM page VERSION branch1 WHERE id = 23924853 ;
DELETE FROM page VERSION branch1 WHERE id = 23921279 ;
DELETE FROM page VERSION branch1 WHERE id = 23911534 ;
DELETE FROM page VERSION branch1 WHERE id = 23917285 ;
DELETE FROM page VERSION branch1 WHERE id = 23920323 ;
DELETE FROM page VERSION branch1 WHERE id = 23922293 ;
DELETE FROM page VERSION branch1 WHERE id = 23910953 ;
DELETE FROM page VERSION branch1 WHERE id = 23920892 ;
DELETE FROM page VERSION branch1 WHERE id = 23916207 ;
DELETE FROM page VERSION branch1 WHERE id = 23915155 ;
DELETE FROM page VERSION branch1 WHERE id = 23917480 ;
DELETE FROM page VERSION branch1 WHERE id = 23915953 ;
DELETE FROM page VERSION branch1 WHERE id = 23917923 ;
DELETE FROM page VERSION branch1 WHERE id = 23924614 ;
DELETE FROM page VERSION branch1 WHERE id = 23911201 ;
DELETE FROM page VERSION branch1 WHERE id = 23919826 ;
DELETE FROM page VERSION branch1 WHERE id = 23920950 ;
DELETE FROM page VERSION branch1 WHERE id = 23927337 ;
DELETE FROM page VERSION branch1 WHERE id = 23913724 ;
DELETE FROM page VERSION branch1 WHERE id = 23923463 ;
DELETE FROM page VERSION branch1 WHERE id = 23924209 ;
DELETE FROM page VERSION branch1 WHERE id = 23911064 ;
DELETE FROM page VERSION branch1 WHERE id = 23918110 ;
DELETE FROM page VERSION branch1 WHERE id = 23918879 ;
DELETE FROM page VERSION branch1 WHERE id = 23915773 ;
DELETE FROM page VERSION branch1 WHERE id = 23923171 ;
DELETE FROM page VERSION branch1 WHERE id = 23911831 ;
DELETE FROM page VERSION branch1 WHERE id = 23915154 ;
DELETE FROM page VERSION branch1 WHERE id = 23916278 ;
DELETE FROM page VERSION branch1 WHERE id = 23925371 ;
DELETE FROM page VERSION branch1 WHERE id = 23917722 ;
DELETE FROM page VERSION branch1 WHERE id = 23914971 ;
DELETE FROM page VERSION branch1 WHERE id = 23924442 ;
DELETE FROM page VERSION branch1 WHERE id = 23915527 ;
DELETE FROM page VERSION branch1 WHERE id = 23916651 ;
DELETE FROM page VERSION branch1 WHERE id = 23925047 ;
DELETE FROM page VERSION branch1 WHERE id = 23911411 ;
DELETE FROM page VERSION branch1 WHERE id = 23913872 ;
DELETE FROM page VERSION branch1 WHERE id = 23914150 ;
DELETE FROM page VERSION branch1 WHERE id = 23912358 ;
DELETE FROM page VERSION branch1 WHERE id = 23916569 ;
DELETE FROM page VERSION branch1 WHERE id = 23923615 ;
DELETE FROM page VERSION branch1 WHERE id = 23912162 ;
DELETE FROM page VERSION branch1 WHERE id = 23914978 ;
DELETE FROM page VERSION branch1 WHERE id = 23917907 ;
DELETE FROM page VERSION branch1 WHERE id = 23925644 ;
DELETE FROM page VERSION branch1 WHERE id = 23921692 ;
DELETE FROM page VERSION branch1 WHERE id = 23921615 ;
DELETE FROM page VERSION branch1 WHERE id = 23913055 ;
DELETE FROM page VERSION branch1 WHERE id = 23914783 ;
DELETE FROM page VERSION branch1 WHERE id = 23910847 ;
DELETE FROM page VERSION branch1 WHERE id = 23925662 ;
DELETE FROM page VERSION branch1 WHERE id = 23912162 ;
DELETE FROM page VERSION branch1 WHERE id = 23913173 ;
DELETE FROM page VERSION branch1 WHERE id = 23917303 ;
DELETE FROM page VERSION branch1 WHERE id = 23918692 ;
DELETE FROM page VERSION branch1 WHERE id = 23916012 ;
DELETE FROM page VERSION branch1 WHERE id = 23912438 ;
DELETE FROM page VERSION branch1 WHERE id = 23926607 ;
DELETE FROM page VERSION branch1 WHERE id = 23916846 ;
DELETE FROM page VERSION branch1 WHERE id = 23914118 ;
DELETE FROM page VERSION branch1 WHERE id = 23923970 ;
DELETE FROM page VERSION branch1 WHERE id = 23919527 ;
DELETE FROM page VERSION branch1 WHERE id = 23922834 ;
DELETE FROM page VERSION branch1 WHERE id = 23910890 ;
DELETE FROM page VERSION branch1 WHERE id = 23920006 ;
DELETE FROM page VERSION branch1 WHERE id = 23913871 ;
DELETE FROM page VERSION branch1 WHERE id = 23916645 ;
DELETE FROM page VERSION branch1 WHERE id = 23920798 ;
DELETE FROM page VERSION branch1 WHERE id = 23926152 ;
DELETE FROM page VERSION branch1 WHERE id = 23917237 ;
DELETE FROM page VERSION branch1 WHERE id = 23920786 ;
DELETE FROM page VERSION branch1 WHERE id = 23913718 ;
DELETE FROM page VERSION branch1 WHERE id = 23923657 ;
DELETE FROM page VERSION branch1 WHERE id = 23911849 ;
DELETE FROM page VERSION branch1 WHERE id = 23913819 ;
DELETE FROM page VERSION branch1 WHERE id = 23913719 ;
DELETE FROM page VERSION branch1 WHERE id = 23916984 ;
DELETE FROM page VERSION branch1 WHERE id = 23914853 ;
DELETE FROM page VERSION branch1 WHERE id = 23917314 ;
DELETE FROM page VERSION branch1 WHERE id = 23922177 ;
DELETE FROM page VERSION branch1 WHERE id = 23921706 ;
DELETE FROM page VERSION branch1 WHERE id = 23917604 ;
DELETE FROM page VERSION branch1 WHERE id = 23922402 ;
DELETE FROM page VERSION branch1 WHERE id = 23922124 ;
quit
DELETE FROM page VERSION branch1 WHERE id = 23923115 ;
DELETE FROM page VERSION branch1 WHERE id = 23916612 ;
DELETE FROM page VERSION branch1 WHERE id = 23911478 ;
DELETE FROM page VERSION branch1 WHERE id = 23915702 ;
DELETE FROM page VERSION branch1 WHERE id = 23911020 ;
DELETE FROM page VERSION branch1 WHERE id = 23918670 ;
DELETE FROM page VERSION branch1 WHERE id = 23918060 ;
DELETE FROM page VERSION branch1 WHERE id = 23923995 ;
DELETE FROM page VERSION branch1 WHERE id = 23920757 ;
DELETE FROM page VERSION branch1 WHERE id = 23913424 ;
DELETE FROM page VERSION branch1 WHERE id = 23922743 ;
DELETE FROM page VERSION branch1 WHERE id = 23913809 ;
DELETE FROM page VERSION branch1 WHERE id = 23918391 ;
DELETE FROM page VERSION branch1 WHERE id = 23915595 ;
DELETE FROM page VERSION branch1 WHERE id = 23926025 ;
DELETE FROM page VERSION branch1 WHERE id = 23924853 ;
DELETE FROM page VERSION branch1 WHERE id = 23921279 ;
DELETE FROM page VERSION branch1 WHERE id = 23911534 ;
DELETE FROM page VERSION branch1 WHERE id = 23917285 ;
DELETE FROM page VERSION branch1 WHERE id = 23920323 ;
DELETE FROM page VERSION branch1 WHERE id = 23922293 ;
DELETE FROM page VERSION branch1 WHERE id = 23910953 ;
DELETE FROM page VERSION branch1 WHERE id = 23920892 ;
DELETE FROM page VERSION branch1 WHERE id = 23916207 ;
DELETE FROM page VERSION branch1 WHERE id = 23915155 ;
DELETE FROM page VERSION branch1 WHERE id = 23917480 ;
DELETE FROM page VERSION branch1 WHERE id = 23915953 ;
DELETE FROM page VERSION branch1 WHERE id = 23917923 ;
DELETE FROM page VERSION branch1 WHERE id = 23924614 ;
DELETE FROM page VERSION branch1 WHERE id = 23911201 ;
DELETE FROM page VERSION branch1 WHERE id = 23919826 ;
DELETE FROM page VERSION branch1 WHERE id = 23920950 ;
DELETE FROM page VERSION branch1 WHERE id = 23927337 ;
DELETE FROM page VERSION branch1 WHERE id = 23913724 ;
DELETE FROM page VERSION branch1 WHERE id = 23923463 ;
DELETE FROM page VERSION branch1 WHERE id = 23924209 ;
DELETE FROM page VERSION branch1 WHERE id = 23911064 ;
DELETE FROM page VERSION branch1 WHERE id = 23918110 ;
DELETE FROM page VERSION branch1 WHERE id = 23918879 ;
DELETE FROM page VERSION branch1 WHERE id = 23915773 ;
DELETE FROM page VERSION branch1 WHERE id = 23923171 ;
DELETE FROM page VERSION branch1 WHERE id = 23911831 ;
DELETE FROM page VERSION branch1 WHERE id = 23915154 ;
DELETE FROM page VERSION branch1 WHERE id = 23916278 ;
DELETE FROM page VERSION branch1 WHERE id = 23925371 ;
DELETE FROM page VERSION branch1 WHERE id = 23917722 ;
DELETE FROM page VERSION branch1 WHERE id = 23914971 ;
DELETE FROM page VERSION branch1 WHERE id = 23924442 ;
DELETE FROM page VERSION branch1 WHERE id = 23915527 ;
DELETE FROM page VERSION branch1 WHERE id = 23916651 ;
DELETE FROM page VERSION branch1 WHERE id = 23925047 ;
DELETE FROM page VERSION branch1 WHERE id = 23911411 ;
DELETE FROM page VERSION branch1 WHERE id = 23913872 ;
DELETE FROM page VERSION branch1 WHERE id = 23914150 ;
DELETE FROM page VERSION branch1 WHERE id = 23912358 ;
DELETE FROM page VERSION branch1 WHERE id = 23916569 ;
DELETE FROM page VERSION branch1 WHERE id = 23923615 ;
DELETE FROM page VERSION branch1 WHERE id = 23912162 ;
DELETE FROM page VERSION branch1 WHERE id = 23914978 ;
DELETE FROM page VERSION branch1 WHERE id = 23917907 ;
DELETE FROM page VERSION branch1 WHERE id = 23925644 ;
DELETE FROM page VERSION branch1 WHERE id = 23921692 ;
DELETE FROM page VERSION branch1 WHERE id = 23921615 ;
DELETE FROM page VERSION branch1 WHERE id = 23913055 ;
DELETE FROM page VERSION branch1 WHERE id = 23914783 ;
DELETE FROM page VERSION branch1 WHERE id = 23910847 ;
DELETE FROM page VERSION branch1 WHERE id = 23925662 ;
DELETE FROM page VERSION branch1 WHERE id = 23912162 ;
DELETE FROM page VERSION branch1 WHERE id = 23913173 ;
DELETE FROM page VERSION branch1 WHERE id = 23917303 ;
DELETE FROM page VERSION branch1 WHERE id = 23918692 ;
DELETE FROM page VERSION branch1 WHERE id = 23916012 ;
DELETE FROM page VERSION branch1 WHERE id = 23912438 ;
DELETE FROM page VERSION branch1 WHERE id = 23926607 ;
DELETE FROM page VERSION branch1 WHERE id = 23916846 ;
DELETE FROM page VERSION branch1 WHERE id = 23914118 ;
DELETE FROM page VERSION branch1 WHERE id = 23923970 ;
DELETE FROM page VERSION branch1 WHERE id = 23919527 ;
DELETE FROM page VERSION branch1 WHERE id = 23922834 ;
DELETE FROM page VERSION branch1 WHERE id = 23910890 ;
DELETE FROM page VERSION branch1 WHERE id = 23920006 ;
DELETE FROM page VERSION branch1 WHERE id = 23913871 ;
DELETE FROM page VERSION branch1 WHERE id = 23916645 ;
DELETE FROM page VERSION branch1 WHERE id = 23920798 ;
DELETE FROM page VERSION branch1 WHERE id = 23926152 ;
DELETE FROM page VERSION branch1 WHERE id = 23917237 ;
DELETE FROM page VERSION branch1 WHERE id = 23920786 ;
DELETE FROM page VERSION branch1 WHERE id = 23913718 ;
DELETE FROM page VERSION branch1 WHERE id = 23923657 ;
DELETE FROM page VERSION branch1 WHERE id = 23911849 ;
DELETE FROM page VERSION branch1 WHERE id = 23913819 ;
DELETE FROM page VERSION branch1 WHERE id = 23913719 ;
DELETE FROM page VERSION branch1 WHERE id = 23916984 ;
DELETE FROM page VERSION branch1 WHERE id = 23914853 ;
DELETE FROM page VERSION branch1 WHERE id = 23917314 ;
DELETE FROM page VERSION branch1 WHERE id = 23922177 ;
DELETE FROM page VERSION branch1 WHERE id = 23921706 ;
DELETE FROM page VERSION branch1 WHERE id = 23917604 ;
DELETE FROM page VERSION branch1 WHERE id = 23922402 ;
DELETE FROM page VERSION branch1 WHERE id = 23922124 ;
quit
DELETE FROM page VERSION branch1 WHERE id = 30247 ;
DELETE FROM page VERSION branch1 WHERE id = 30293 ;
DELETE FROM page VERSION branch1 WHERE id = 30283 ;
DELETE FROM page VERSION branch1 WHERE id = 30260 ;
DELETE FROM page VERSION branch1 WHERE id = 30241 ;
DELETE FROM page VERSION branch1 WHERE id = 30253 ;
DELETE FROM page VERSION branch1 WHERE id = 30236 ;
DELETE FROM page VERSION branch1 WHERE id = 30280 ;
DELETE FROM page VERSION branch1 WHERE id = 30285 ;
DELETE FROM page VERSION branch1 WHERE id = 30294 ;
DELETE FROM page VERSION branch1 WHERE id = 30296 ;
DELETE FROM page VERSION branch1 WHERE id = 30284 ;
DELETE FROM page VERSION branch1 WHERE id = 30251 ;
DELETE FROM page VERSION branch1 WHERE id = 30247 ;
DELETE FROM page VERSION branch1 WHERE id = 30280 ;
DELETE FROM page VERSION branch1 WHERE id = 30257 ;
DELETE FROM page VERSION branch1 WHERE id = 30245 ;
DELETE FROM page VERSION branch1 WHERE id = 30295 ;
DELETE FROM page VERSION branch1 WHERE id = 30257 ;
DELETE FROM page VERSION branch1 WHERE id = 30247 ;
DELETE FROM page VERSION branch1 WHERE id = 30233 ;
DELETE FROM page VERSION branch1 WHERE id = 30295 ;
DELETE FROM page VERSION branch1 WHERE id = 30279 ;
DELETE FROM page VERSION branch1 WHERE id = 30294 ;
DELETE FROM page VERSION branch1 WHERE id = 30299 ;
quit
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1925;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 612;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 51;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 431;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 600;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1616;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1692;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 626;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1508;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 991;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1525;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1107;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 702;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 565;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 759;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1659;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1946;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 1623;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 451;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 473;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 32;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 628;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 2047;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 859;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 207;
quit
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23912621;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23914882;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23921298;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23922380;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23919518;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23922709;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23913028;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23911164;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23922520;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23919130;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23925500;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23913892;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23924047;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23927191;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23925138;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23919800;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23918010;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23911010;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23913438;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23914525;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23924823;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23926659;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23923882;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23927050;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 23920381;
quit
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30272;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30299;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30231;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30269;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30246;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30280;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30238;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30267;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30256;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30259;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30283;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30284;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30268;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30284;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30265;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30253;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30291;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30236;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30238;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30279;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30290;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30248;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30268;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30298;
SELECT text FROM page VERSION branch1 p , content c WHERE p.textId = c.id AND p.id = 30283;
quit
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 513;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1270;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 799;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 732;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1101;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 708;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 452;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 55;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1525;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1367;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1813;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1303;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1734;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 34;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1144;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1036;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 2036;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1303;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1996;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 93;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1812;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1594;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1301;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 1408;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 15;
quit
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922721;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23927739;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924077;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912468;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919804;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914783;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23920804;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911975;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922921;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912243;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23920483;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23913172;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914460;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915829;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916271;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922157;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23921463;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922612;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916793;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23918146;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917490;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911406;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919566;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914231;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917492;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912044;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911460;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917236;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915043;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912850;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911210;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923286;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23921432;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916346;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925478;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923172;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912803;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914999;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23921886;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923939;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922567;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923774;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23918084;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923150;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912052;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924974;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911428;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916358;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914589;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917094;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919622;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923593;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924872;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915023;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916705;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923440;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915749;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925571;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923620;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917734;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914204;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925418;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917697;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912579;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924035;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919698;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925052;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23926243;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23927547;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915202;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914240;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925864;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923316;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23910971;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912676;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915317;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916863;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911277;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23913918;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925261;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925509;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912968;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916997;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23920726;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912657;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915540;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925683;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915046;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911433;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911610;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23918949;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925882;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925946;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23921706;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923676;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23927252;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924213;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919182;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917729;
SELECT name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23918074;
quit
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922721;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23927739;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924077;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912468;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919804;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914783;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23920804;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911975;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922921;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912243;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23920483;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23913172;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914460;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915829;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916271;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922157;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23921463;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922612;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916793;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23918146;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917490;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911406;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919566;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914231;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917492;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912044;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911460;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917236;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915043;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912850;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911210;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923286;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23921432;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916346;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925478;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923172;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912803;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914999;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23921886;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923939;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23922567;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923774;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23918084;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923150;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912052;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924974;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911428;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916358;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914589;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917094;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919622;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923593;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924872;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915023;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916705;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923440;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915749;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925571;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923620;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917734;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914204;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925418;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917697;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912579;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924035;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919698;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925052;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23926243;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23927547;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915202;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23914240;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925864;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923316;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23910971;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912676;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915317;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916863;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911277;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23913918;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925261;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925509;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912968;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23916997;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23920726;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23912657;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915540;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925683;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23915046;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911433;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23911610;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23918949;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925882;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23925946;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23921706;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23923676;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23927252;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23924213;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23919182;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23917729;
SELECT u.name FROM user u , page VERSION branch1 p WHERE p.userId = u.id AND p.id = 23918074;
quit
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30292;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30269;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30246;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30273;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30282;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30254;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30278;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30244;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30252;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30257;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30265;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30280;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30272;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30271;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30296;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30295;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30239;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30248;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30267;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30275;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30240;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30264;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30283;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30256;
SELECT text FROM page VERSION branch1 p , content VERSION branch1 c WHERE p.textId = c.id AND p.id = 30231;
quit