Skip to content

Commit

Permalink
Restructure BradFlightSqlServer class, integrate pybind library and c…
Browse files Browse the repository at this point in the history
…reate bindings (#472)

* Relocated cpp directory to access modules from brad front_end, wrote skeleton code for initializing cpp server via pybind

* Comment out non-essential class methods for server

* Begin to integrate flight sql server via pybind

* Create pybind bindings for BradFlightSqlServer and initialize instance in frontend

* Move brad to top level, create  directory under src/brad, create symbolic link to pybind_brad_server so file

* Remove cpp from src, create symlink with ln -s

* Handle avoid creating native brad server if import fails

* Remove Impl class and implement FlightSqlServer functions directly, fix python bindings

* Implement BradFlightSqlServer::Create and use in frontend

* Refactor CMake file with common sources files into object libraries

* Clean up comments

* Remove unnecessary print statements

* Upgrade arrow and datafusion. remove dataset generation features (#466)

* Upgrade arrow and datafusion. remove dataset generation features

* DatasetGenerator upgrade fixes

* Use plan optimization methods

* Upgrade existing benchmark code
---------

Co-authored-by: Geoffrey Yu <[email protected]>

* Check in plan rewrite and custom operator sandbox code (#467)

* Improve exploratory code

* Add new 'tap in' operator for testing

* Implement operator rewrite manually

* Fix compilation errors

* Call into rewrite and test out custom operator

* Bootstrap a web backend for the demo (#468)

* Add initial dashboard files

* Start up the backend if requested

* Check in moved files

* Serve static file

* Add dashboard structure and project files (#469)

* Bootstrap UI code

* Remove unused files, reformat code

* Check in structure

* Fix layout styling

* Improve overall layout

* Fix header alignment

* Reformat

* Remove unneeded svg

* Check in placeholder __init__ for symlink to work in CI

* Add more views to the dashboard UI (#470)

* Add VDBE view

* Add additional views

* Improve views

* Add status indicator

* Render system metrics and blueprint (#473)

* Add performance data chart

* Add endpoint for live metrics

* Add endpoint to return blueprint state

* Fetch data from the daemon, parse and feed it to the views

* Fix metrics state updating

* Link system state too

* Ensure charts update live

* Pass through other metrics

* Styling fixes, display actual blueprint

* Fix types

* Address code review comments

---------

Co-authored-by: Sophie Zhang <[email protected]>
Co-authored-by: Albert Xing <[email protected]>
Co-authored-by: Geoffrey Yu <[email protected]>
  • Loading branch information
4 people authored Mar 9, 2024
1 parent 9143571 commit 698fc9c
Show file tree
Hide file tree
Showing 17 changed files with 213 additions and 600 deletions.
59 changes: 35 additions & 24 deletions cpp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.16)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")

add_compile_definitions("RELEASE=$<CONFIG:Release>")

Expand All @@ -15,48 +16,58 @@ find_package(gflags REQUIRED)

find_package(SQLite3 REQUIRED)

include(FetchContent)
FetchContent_Declare(
pybind11
GIT_REPOSITORY https://github.com/pybind/pybind11.git
GIT_TAG v2.11.1
)
FetchContent_MakeAvailable(pybind11)

add_library(brad_server_lib OBJECT
server/brad_server_simple.cc
server/brad_sql_info.cc
server/brad_statement_batch_reader.cc
server/brad_statement.cc
server/brad_tables_schema_batch_reader.cc)

add_library(sqlite_server_lib OBJECT
sqlite_server/sqlite_server.cc
sqlite_server/sqlite_sql_info.cc
sqlite_server/sqlite_statement_batch_reader.cc
sqlite_server/sqlite_statement.cc
sqlite_server/sqlite_tables_schema_batch_reader.cc
sqlite_server/sqlite_type_info.cc)

pybind11_add_module(pybind_brad_server pybind/brad_server.cc)
target_link_libraries(pybind_brad_server
PRIVATE Arrow::arrow_shared
PRIVATE ArrowFlight::arrow_flight_shared
PRIVATE ArrowFlightSql::arrow_flight_sql_shared
PRIVATE brad_server_lib)

add_executable(flight_sql_example_client flight_sql_example_client.cc)
target_link_libraries(flight_sql_example_client
PRIVATE Arrow::arrow_shared
PRIVATE ArrowFlight::arrow_flight_shared
PRIVATE ArrowFlightSql::arrow_flight_sql_shared
gflags)

add_executable(flight_sql_example_server flight_sql_example_server.cc
sqlite_server/sqlite_server.cc
sqlite_server/sqlite_server.h
sqlite_server/sqlite_sql_info.cc
sqlite_server/sqlite_sql_info.h
sqlite_server/sqlite_statement_batch_reader.cc
sqlite_server/sqlite_statement_batch_reader.h
sqlite_server/sqlite_statement.cc
sqlite_server/sqlite_statement.h
sqlite_server/sqlite_tables_schema_batch_reader.cc
sqlite_server/sqlite_tables_schema_batch_reader.h
sqlite_server/sqlite_type_info.cc
sqlite_server/sqlite_type_info.h)
add_executable(flight_sql_example_server flight_sql_example_server.cc)
target_link_libraries(flight_sql_example_server
PRIVATE Arrow::arrow_shared
PRIVATE ArrowFlight::arrow_flight_shared
PRIVATE ArrowFlightSql::arrow_flight_sql_shared
PRIVATE sqlite_server_lib
gflags
${SQLite3_LIBRARIES})

add_executable(flight_sql_brad_server flight_sql_brad_server.cc
server/brad_server.cc
server/brad_server.h
server/brad_sql_info.cc
server/brad_sql_info.h
server/brad_statement_batch_reader.cc
server/brad_statement_batch_reader.h
server/brad_statement.cc
server/brad_statement.h
server/brad_tables_schema_batch_reader.cc
server/brad_tables_schema_batch_reader.h)
add_executable(flight_sql_brad_server flight_sql_brad_server.cc)
target_link_libraries(flight_sql_brad_server
PRIVATE Arrow::arrow_shared
PRIVATE ArrowFlight::arrow_flight_shared
PRIVATE ArrowFlightSql::arrow_flight_sql_shared
PRIVATE brad_server_lib
gflags)

add_executable(brad_front_end brad_front_end.cc)
Expand Down
17 changes: 17 additions & 0 deletions cpp/pybind/brad_server.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include <pybind11/pybind11.h>

#include <iostream>

#include "../server/brad_server_simple.h"

namespace py = pybind11;

PYBIND11_MODULE(pybind_brad_server, m) {
m.doc() = "BradFlightSqlServer Python bindings";

py::class_<brad::BradFlightSqlServer> brad_server(m, "BradFlightSqlServer");

brad_server
.def(py::init<>())
.def("create", &brad::BradFlightSqlServer::Create);
}
Loading

0 comments on commit 698fc9c

Please sign in to comment.