UI
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
namespace duckdb {
|
||||
|
||||
class QuackExtension : public Extension {
|
||||
class UiExtension : public Extension {
|
||||
public:
|
||||
void Load(DuckDB &db) override;
|
||||
std::string Name() override;
|
||||
@@ -1,6 +1,6 @@
|
||||
#define DUCKDB_EXTENSION_MAIN
|
||||
|
||||
#include "quack_extension.hpp"
|
||||
#include "ui_extension.hpp"
|
||||
#include "duckdb.hpp"
|
||||
#include "duckdb/common/exception.hpp"
|
||||
#include "duckdb/common/string_util.hpp"
|
||||
@@ -13,21 +13,21 @@
|
||||
|
||||
namespace duckdb {
|
||||
|
||||
inline void QuackScalarFun(DataChunk &args, ExpressionState &state, Vector &result) {
|
||||
inline void UiScalarFun(DataChunk &args, ExpressionState &state, Vector &result) {
|
||||
auto &name_vector = args.data[0];
|
||||
UnaryExecutor::Execute<string_t, string_t>(
|
||||
name_vector, result, args.size(),
|
||||
[&](string_t name) {
|
||||
return StringVector::AddString(result, "Quack "+name.GetString()+" 🐥");
|
||||
return StringVector::AddString(result, "Ui "+name.GetString()+" 🐥");
|
||||
});
|
||||
}
|
||||
|
||||
inline void QuackOpenSSLVersionScalarFun(DataChunk &args, ExpressionState &state, Vector &result) {
|
||||
inline void UiOpenSSLVersionScalarFun(DataChunk &args, ExpressionState &state, Vector &result) {
|
||||
auto &name_vector = args.data[0];
|
||||
UnaryExecutor::Execute<string_t, string_t>(
|
||||
name_vector, result, args.size(),
|
||||
[&](string_t name) {
|
||||
return StringVector::AddString(result, "Quack " + name.GetString() +
|
||||
return StringVector::AddString(result, "Ui " + name.GetString() +
|
||||
", my linked OpenSSL version is " +
|
||||
OPENSSL_VERSION_TEXT );
|
||||
});
|
||||
@@ -35,25 +35,25 @@ inline void QuackOpenSSLVersionScalarFun(DataChunk &args, ExpressionState &state
|
||||
|
||||
static void LoadInternal(DatabaseInstance &instance) {
|
||||
// Register a scalar function
|
||||
auto quack_scalar_function = ScalarFunction("quack", {LogicalType::VARCHAR}, LogicalType::VARCHAR, QuackScalarFun);
|
||||
ExtensionUtil::RegisterFunction(instance, quack_scalar_function);
|
||||
auto ui_scalar_function = ScalarFunction("ui", {LogicalType::VARCHAR}, LogicalType::VARCHAR, UiScalarFun);
|
||||
ExtensionUtil::RegisterFunction(instance, ui_scalar_function);
|
||||
|
||||
// Register another scalar function
|
||||
auto quack_openssl_version_scalar_function = ScalarFunction("quack_openssl_version", {LogicalType::VARCHAR},
|
||||
LogicalType::VARCHAR, QuackOpenSSLVersionScalarFun);
|
||||
ExtensionUtil::RegisterFunction(instance, quack_openssl_version_scalar_function);
|
||||
auto ui_openssl_version_scalar_function = ScalarFunction("ui_openssl_version", {LogicalType::VARCHAR},
|
||||
LogicalType::VARCHAR, UiOpenSSLVersionScalarFun);
|
||||
ExtensionUtil::RegisterFunction(instance, ui_openssl_version_scalar_function);
|
||||
}
|
||||
|
||||
void QuackExtension::Load(DuckDB &db) {
|
||||
void UiExtension::Load(DuckDB &db) {
|
||||
LoadInternal(*db.instance);
|
||||
}
|
||||
std::string QuackExtension::Name() {
|
||||
return "quack";
|
||||
std::string UiExtension::Name() {
|
||||
return "ui";
|
||||
}
|
||||
|
||||
std::string QuackExtension::Version() const {
|
||||
#ifdef EXT_VERSION_QUACK
|
||||
return EXT_VERSION_QUACK;
|
||||
std::string UiExtension::Version() const {
|
||||
#ifdef EXT_VERSION_UI
|
||||
return EXT_VERSION_UI;
|
||||
#else
|
||||
return "";
|
||||
#endif
|
||||
@@ -63,12 +63,12 @@ std::string QuackExtension::Version() const {
|
||||
|
||||
extern "C" {
|
||||
|
||||
DUCKDB_EXTENSION_API void quack_init(duckdb::DatabaseInstance &db) {
|
||||
DUCKDB_EXTENSION_API void ui_init(duckdb::DatabaseInstance &db) {
|
||||
duckdb::DuckDB db_wrapper(db);
|
||||
db_wrapper.LoadExtension<duckdb::QuackExtension>();
|
||||
db_wrapper.LoadExtension<duckdb::UiExtension>();
|
||||
}
|
||||
|
||||
DUCKDB_EXTENSION_API const char *quack_version() {
|
||||
DUCKDB_EXTENSION_API const char *ui_version() {
|
||||
return duckdb::DuckDB::LibraryVersion();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user