merged T70
This commit is contained in:
commit
e5f161974f
@ -330,6 +330,13 @@ if (LOG_NO_ERROR)
|
||||
add_definitions(-DLOG_NO_ERROR)
|
||||
endif()
|
||||
# -- logging ------------------------------------------------------------------
|
||||
# -- logger -------------------------------------------------------------------
|
||||
option(SYNC_LOGGER "" OFF)
|
||||
message(STATUS "SYNC LOGGER: ${SYNC_LOGGER}")
|
||||
if (SYNC_LOGGER)
|
||||
add_definitions(-DSYNC_LOGGER)
|
||||
endif()
|
||||
# -- logger -------------------------------------------------------------------
|
||||
# -- assert -------------------------------------------------------------------
|
||||
option(RUNTIME_ASSERT "Enable runtime assertions" ON)
|
||||
message(STATUS "RUNTIME_ASSERT: ${RUNTIME_ASSERT}")
|
||||
@ -448,17 +455,22 @@ endif()
|
||||
|
||||
# memgraph build name
|
||||
execute_process(
|
||||
OUTPUT_VARIABLE COMMIT_NO
|
||||
COMMAND git rev-list --count HEAD
|
||||
OUTPUT_VARIABLE COMMIT_BRANCH
|
||||
COMMAND git rev-parse --abbrev-ref HEAD
|
||||
)
|
||||
execute_process(
|
||||
OUTPUT_VARIABLE COMMIT_HASH
|
||||
COMMAND git rev-parse --short HEAD
|
||||
)
|
||||
string(STRIP ${COMMIT_HASH} COMMIT_HASH)
|
||||
execute_process(
|
||||
OUTPUT_VARIABLE COMMIT_NO
|
||||
COMMAND git rev-list --count HEAD
|
||||
)
|
||||
string(STRIP ${COMMIT_BRANCH} COMMIT_BRANCH)
|
||||
string(STRIP ${COMMIT_NO} COMMIT_NO)
|
||||
string(STRIP ${COMMIT_HASH} COMMIT_HASH)
|
||||
set(MEMGRAPH_BUILD_NAME
|
||||
"memgraph_${COMMIT_HASH}_${COMMIT_NO}_${CMAKE_BUILD_TYPE}")
|
||||
"memgraph_${COMMIT_BRANCH}_${COMMIT_HASH}_${COMMIT_NO}_${CMAKE_BUILD_TYPE}")
|
||||
|
||||
# memgraph main executable
|
||||
if (MEMGRAPH)
|
||||
|
@ -85,7 +85,7 @@ public:
|
||||
encoder.write_integer(edge.to().id());
|
||||
|
||||
// write the type of the edge
|
||||
encoder.write_string(edge.edge_type());
|
||||
encoder.write_string(edge.edge_type().get());
|
||||
|
||||
// write the property map
|
||||
auto props = edge.properties();
|
||||
|
@ -4,9 +4,9 @@
|
||||
#include <cstring>
|
||||
#include <functional>
|
||||
|
||||
#include "utils/likely.hpp"
|
||||
#include "communication/bolt/v1/config.hpp"
|
||||
#include "logging/default.hpp"
|
||||
#include "utils/likely.hpp"
|
||||
|
||||
namespace bolt
|
||||
{
|
||||
@ -20,27 +20,25 @@ class ChunkedEncoder
|
||||
public:
|
||||
using byte = unsigned char;
|
||||
|
||||
ChunkedEncoder(Stream& stream) : stream(stream)
|
||||
ChunkedEncoder(Stream &stream)
|
||||
: logger(logging::log->logger("Chunked Encoder")), stream(stream)
|
||||
{
|
||||
logger = logging::log->logger("Chunked Encoder");
|
||||
}
|
||||
|
||||
static constexpr size_t chunk_size = N - 2;
|
||||
|
||||
void write(byte value)
|
||||
{
|
||||
if(UNLIKELY(pos == N))
|
||||
end_chunk();
|
||||
if (UNLIKELY(pos == N)) end_chunk();
|
||||
|
||||
chunk[pos++] = value;
|
||||
}
|
||||
|
||||
void write(const byte* values, size_t n)
|
||||
void write(const byte *values, size_t n)
|
||||
{
|
||||
logger.trace("write {} bytes", n);
|
||||
|
||||
while(n > 0)
|
||||
{
|
||||
while (n > 0) {
|
||||
auto size = n < N - pos ? n : N - pos;
|
||||
|
||||
std::memcpy(chunk.data() + pos, values, size);
|
||||
@ -48,8 +46,7 @@ public:
|
||||
pos += size;
|
||||
n -= size;
|
||||
|
||||
if(pos == N)
|
||||
end_chunk();
|
||||
if (pos == N) end_chunk();
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,13 +66,10 @@ private:
|
||||
std::reference_wrapper<Stream> stream;
|
||||
|
||||
std::array<byte, C> chunk;
|
||||
size_t pos {2};
|
||||
size_t pos{2};
|
||||
|
||||
void end_chunk()
|
||||
{
|
||||
// TODO: this call is unnecessary bacause the same method is called
|
||||
// inside the flush method
|
||||
// write_chunk_header();
|
||||
flush();
|
||||
}
|
||||
|
||||
@ -98,5 +92,4 @@ private:
|
||||
pos = 2;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -49,6 +49,8 @@ public:
|
||||
streams.emplace_back(std::forward<Stream::uptr>(stream));
|
||||
}
|
||||
|
||||
virtual std::string type() = 0;
|
||||
|
||||
protected:
|
||||
friend class Logger;
|
||||
|
||||
|
@ -12,6 +12,7 @@ public:
|
||||
|
||||
protected:
|
||||
void emit(Record::uptr) override;
|
||||
std::string type() override;
|
||||
|
||||
private:
|
||||
lockfree::MpscQueue<Record> records;
|
||||
|
@ -8,4 +8,5 @@ class SyncLog : public Log, Lockable<Futex>
|
||||
{
|
||||
protected:
|
||||
void emit(Record::uptr) override;
|
||||
std::string type() override;
|
||||
};
|
||||
|
@ -17,9 +17,31 @@ public:
|
||||
|
||||
void compile(const std::string &in_file, const std::string &out_file)
|
||||
{
|
||||
std::string flags;
|
||||
|
||||
// TODO: sync this with cmake configuration
|
||||
#ifdef NDEBUG
|
||||
flags += " -DNDEBUG -O2";
|
||||
#endif
|
||||
#ifdef LOG_NO_TRACE
|
||||
flags += " -DLOG_NO_TRACE";
|
||||
#endif
|
||||
#ifdef LOG_NO_DEBUG
|
||||
flags += " -DLOG_NO_DEBUG";
|
||||
#endif
|
||||
#ifdef LOG_NO_INFO
|
||||
flags += " -DLOG_NO_INFO";
|
||||
#endif
|
||||
#ifdef LOG_NO_WARN
|
||||
flags += " -DLOG_NO_WARN";
|
||||
#endif
|
||||
#ifdef LOG_NO_ERROR
|
||||
flags += " -DLOG_NO_ERROR";
|
||||
#endif
|
||||
|
||||
// generate compile command
|
||||
auto compile_command = utils::prints(
|
||||
"clang++",
|
||||
"clang++" + flags,
|
||||
// "-std=c++1y -O2 -DNDEBUG", // compile flags
|
||||
"-std=c++1y", // compile flags // TODO: load from config file
|
||||
in_file, // input file
|
||||
@ -30,6 +52,8 @@ public:
|
||||
"-shared -fPIC" // shared library flags
|
||||
);
|
||||
|
||||
logger.debug("compile command -> {}", compile_command);
|
||||
|
||||
// synchronous call
|
||||
auto compile_status = system(compile_command.c_str());
|
||||
|
||||
|
@ -55,7 +55,7 @@ public:
|
||||
{"query", query},
|
||||
{"code", cpp_traverser.code}});
|
||||
|
||||
logger.trace("generated code: {}", generated);
|
||||
// logger.trace("generated code: {}", generated);
|
||||
|
||||
utils::write_file(generated, path);
|
||||
}
|
||||
|
@ -21,8 +21,8 @@ public:
|
||||
using sptr_code_lib = std::shared_ptr<CodeLib>;
|
||||
|
||||
ProgramLoader() :
|
||||
stripper(make_query_stripper(TK_LONG, TK_FLOAT, TK_STR, TK_BOOL)),
|
||||
logger(logging::log->logger("ProgramLoader"))
|
||||
logger(logging::log->logger("ProgramLoader")),
|
||||
stripper(make_query_stripper(TK_LONG, TK_FLOAT, TK_STR, TK_BOOL))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -45,14 +45,15 @@ const std::string vertex_accessor_args_id =
|
||||
|
||||
const std::string match_vertex_by_id =
|
||||
"auto {0} = db.graph.vertices.find(t, args[{1}]->as<Int64>().value);\n"
|
||||
" if (!{0}) return t.commit(), std::make_shared<QueryResult>();";
|
||||
" if (!{0}) return t.commit(), false;";
|
||||
const std::string match_edge_by_id =
|
||||
"auto {0} = db.graph.edges.find(t, args[{1}]->as<Int64>().value);\n"
|
||||
" if (!{0}) return t.commit(), std::make_shared<QueryResult>();";
|
||||
" if (!{0}) return t.commit(), false;";
|
||||
|
||||
const std::string write_entity =
|
||||
"stream.write_field(\"{0}\");\n"
|
||||
" stream.write_record();\n"
|
||||
" stream.write_list_header(1);\n"
|
||||
" stream.write({0});\n"
|
||||
" stream.write_success_empty();\n";
|
||||
|
||||
|
42
release/alpha.sh
Executable file
42
release/alpha.sh
Executable file
@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Initial version of script that is going to be used for release build.
|
||||
|
||||
# TODO: enable options related to lib
|
||||
|
||||
echo "Memgraph Release Building..."
|
||||
|
||||
cd ../build
|
||||
# get most recent version of memgraph exe
|
||||
exe_name=`ls -t memgraph_* | head -1`
|
||||
|
||||
cd ../release
|
||||
# create libs dir
|
||||
mkdir -p libs
|
||||
|
||||
# initialize all libs
|
||||
# cp ../libs/setup.sh libs/setup.sh
|
||||
# ./libs/setup.sh
|
||||
|
||||
# just copy all libs
|
||||
cp -r ../libs ./
|
||||
|
||||
# compile memgraph
|
||||
cd ../build
|
||||
# rm -rf ./*
|
||||
# cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE:String=debug ..
|
||||
# make -j 4
|
||||
|
||||
# create dst directory
|
||||
mkdir -p ../release/${exe_name}
|
||||
|
||||
# copy all relevant files
|
||||
cp ${exe_name} ../release/${exe_name}/memgraph
|
||||
cp libmemgraph_pic.a ../release/${exe_name}/libmemgraph_pic.a
|
||||
cp -r include ../release/${exe_name}/include
|
||||
cp -r template ../release/${exe_name}/template
|
||||
mkdir -p ../release/${exe_name}/compiled/cpu
|
||||
|
||||
echo "Memgraph Release Building DONE"
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "TODO: build beta version of Memgraph"
|
@ -41,7 +41,7 @@ public:
|
||||
|
||||
} while(tokens.back().id != 0);
|
||||
|
||||
return std::move(tree);
|
||||
return tree;
|
||||
}
|
||||
|
||||
protected:
|
||||
|
@ -8,31 +8,35 @@ session = driver.session()
|
||||
|
||||
queries = [];
|
||||
|
||||
queries.append((True, "CREATE (n {age: 32}) RETURN n"))
|
||||
queries.append((True, "CREATE (n {name: \"Max\", age: 21}) RETURN n"))
|
||||
queries.append((False, "CREATE (n {name: \"Paul\", age: 21}) RETURN n"))
|
||||
queries.append((False, "CREATE (n:PERSON {name: \"Chris\", age: 20}) RETURN n"))
|
||||
queries.append((False, "CREATE (n:PERSON:STUDENT {name: \"Marko\", age: 19}) RETURN n"))
|
||||
queries.append((False, "CREATE (n:TEST {string: \"Properties test\", integer: 100, float: 232.2323, bool: True}) RETURN n"))
|
||||
queries.append((True, "CREATE (n {name: \"Paul\", age: 21}) RETURN n"))
|
||||
queries.append((True, "CREATE (n:PERSON {name: \"Chris\", age: 20}) RETURN n"))
|
||||
queries.append((True, "CREATE (n:PERSON:STUDENT {name: \"Marko\", age: 19}) RETURN n"))
|
||||
queries.append((True, "CREATE (n:TEST {string: \"Properties test\", integer: 100, float: 232.2323, bool: True}) RETURN n"))
|
||||
|
||||
queries.append((False, "MATCH (n) WHERE ID(n)=0 RETURN n"))
|
||||
queries.append((False, "MATCH (n) WHERE ID(n)=1 RETURN n"))
|
||||
queries.append((False, "MATCH (n) WHERE ID(n)=2 RETURN n"))
|
||||
queries.append((False, "MATCH (n) WHERE ID(n)=3 RETURN n"))
|
||||
queries.append((False, "MATCH (n) WHERE ID(n)=4 RETURN n"))
|
||||
queries.append((True, "MATCH (n) WHERE ID(n)=0 RETURN n"))
|
||||
queries.append((True, "MATCH (n) WHERE ID(n)=1 RETURN n"))
|
||||
queries.append((True, "MATCH (n) WHERE ID(n)=2 RETURN n"))
|
||||
queries.append((True, "MATCH (n) WHERE ID(n)=3 RETURN n"))
|
||||
queries.append((True, "MATCH (n) WHERE ID(n)=4 RETURN n"))
|
||||
queries.append((True, "MATCH (n) WHERE ID(n)=5 RETURN n"))
|
||||
|
||||
queries.append((False, "MATCH (n1), (n2) WHERE ID(n1)=0 AND ID(n2)=1 CREATE (n1)-[r:IS]->(n2) RETURN r"))
|
||||
queries.append((False, "MATCH (n1), (n2) WHERE ID(n1)=0 AND ID(n2)=1 CREATE (n1)-[r:IS {name: \"test\", age: 23}]->(n2) RETURN r"))
|
||||
queries.append((False, "MATCH (n1), (n2) WHERE ID(n1)=0 AND ID(n2)=1 CREATE (n1)-[r:IS {name: \"test\", age: 23}]->(n2) RETURN r"))
|
||||
queries.append((True, "MATCH (n1), (n2) WHERE ID(n1)=0 AND ID(n2)=1 CREATE (n1)-[r:IS]->(n2) RETURN r"))
|
||||
queries.append((True, "MATCH (n1), (n2) WHERE ID(n1)=1 AND ID(n2)=2 CREATE (n1)-[r:IS {name: \"test\", age: 23}]->(n2) RETURN r"))
|
||||
queries.append((True, "MATCH (n1), (n2) WHERE ID(n1)=2 AND ID(n2)=0 CREATE (n1)-[r:IS {name: \"test\", age: 23}]->(n2) RETURN r"))
|
||||
|
||||
queries.append((False, "MATCH ()-[r]-() WHERE ID(r)=0 RETURN r"))
|
||||
queries.append((False, "MATCH ()-[r]-() WHERE ID(r)=1 RETURN r"))
|
||||
queries.append((False, "MATCH ()-[r]-() WHERE ID(r)=2 RETURN r"))
|
||||
queries.append((True, "MATCH ()-[r]-() WHERE ID(r)=0 RETURN r"))
|
||||
queries.append((True, "MATCH ()-[r]-() WHERE ID(r)=1 RETURN r"))
|
||||
queries.append((True, "MATCH ()-[r]-() WHERE ID(r)=2 RETURN r"))
|
||||
|
||||
queries.append((False, "MATCH (n) WHERE ID(n)=1 SET n.name = \"updated_name\" RETURN n"))
|
||||
queries.append((False, "MATCH (n) WHERE ID(n)=1 RETURN n"))
|
||||
queries.append((False, "MATCH ()-[r]-() WHERE ID(r)=1 SET r.name = \"TEST100\" RETURN r"))
|
||||
queries.append((False, "MATCH ()-[r]-() WHERE ID(r)=1 RETURN r"))
|
||||
queries.append((True, "MATCH (n) WHERE ID(n)=1 SET n.name = \"updated_name\" RETURN n"))
|
||||
queries.append((True, "MATCH (n) WHERE ID(n)=1 RETURN n"))
|
||||
queries.append((True, "MATCH ()-[r]-() WHERE ID(r)=1 SET r.name = \"TEST100\" RETURN r"))
|
||||
queries.append((True, "MATCH ()-[r]-() WHERE ID(r)=1 RETURN r"))
|
||||
|
||||
for active, query in queries:
|
||||
for i in range(1):
|
||||
for active, query in queries:
|
||||
if active:
|
||||
session.run(query)
|
||||
for record in session.run(query):
|
||||
print(record)
|
||||
|
@ -11,6 +11,11 @@ void AsyncLog::emit(Record::uptr record)
|
||||
records.push(std::move(record));
|
||||
}
|
||||
|
||||
std::string AsyncLog::type()
|
||||
{
|
||||
return "AsyncLog";
|
||||
}
|
||||
|
||||
void AsyncLog::work()
|
||||
{
|
||||
using namespace std::chrono_literals;
|
||||
|
@ -5,3 +5,8 @@ void SyncLog::emit(Record::uptr record)
|
||||
auto guard = this->acquire_unique();
|
||||
dispatch(*record);
|
||||
}
|
||||
|
||||
std::string SyncLog::type()
|
||||
{
|
||||
return "SyncLog";
|
||||
}
|
||||
|
@ -34,9 +34,17 @@ int main(void)
|
||||
// that are configured below
|
||||
std::set_terminate(&terminate_handler);
|
||||
|
||||
// logger init
|
||||
#ifdef SYNC_LOGGER
|
||||
logging::init_sync();
|
||||
#else
|
||||
logging::init_async();
|
||||
#endif
|
||||
logging::log->pipe(std::make_unique<Stdout>());
|
||||
|
||||
// get Main logger
|
||||
logger = logging::log->logger("Main");
|
||||
logger.info("{}", logging::log->type());
|
||||
|
||||
signal(SIGINT, sigint_handler);
|
||||
signal(SIGABRT, sigint_handler);
|
||||
@ -63,7 +71,7 @@ int main(void)
|
||||
bolt::Server<bolt::Worker> server(std::move(socket));
|
||||
serverptr = &server;
|
||||
|
||||
constexpr size_t N = 1;
|
||||
auto N = std::thread::hardware_concurrency();
|
||||
|
||||
logger.info("Starting {} workers", N);
|
||||
server.start(N);
|
||||
|
Loading…
Reference in New Issue
Block a user