未验证 提交 4ab0f579 编写于 作者: K Kevin Heifner 提交者: GitHub

Merge pull request #1851 from wanderingbort/feature/remove-unused-contract-database-types

remove the object/index types for the deprecated and removed old DB api
......@@ -1061,12 +1061,6 @@ void chain_controller::_initialize_indexes() {
_db.add_index<contracts::index256_index>();
_db.add_index<contracts::index_double_index>();
_db.add_index<contracts::keystr_value_index>();
_db.add_index<contracts::key128x128_value_index>();
_db.add_index<contracts::key64x64_value_index>();
_db.add_index<contracts::key64x64x64_value_index>();
_db.add_index<global_property_multi_index>();
_db.add_index<dynamic_global_property_multi_index>();
_db.add_index<block_summary_multi_index>();
......
......@@ -121,21 +121,6 @@ namespace eosio { namespace chain { namespace contracts {
> index_index;
};
/*
template <typename T, typename = void>
struct _is_array : std::false_type {};
template <typename T>
struct _is_array<T, std::enable_if<std::is_same<size_t, decltype(SecondaryKey::arr_size)>::type> : std::true_type {};
template<SecondaryKey>
inline
typename std::enable_if<_is_array<SecondaryKey>::value, size_t>::type
get_key_memory_usage() {
return SecondaryKey::arr_size;
}
*/
template<typename SecondaryKey>
inline
//typename std::enable_if<!_is_array<SecondaryKey>::value, size_t>::type
......@@ -170,225 +155,10 @@ namespace eosio { namespace chain { namespace contracts {
typedef secondary_index<uint64_t,index_double_object_type,soft_double_less>::index_object index_double_object;
typedef secondary_index<uint64_t,index_double_object_type,soft_double_less>::index_index index_double_index;
/*
struct index64_object : public chainbase::object<index64_object_type, index64_object> {
OBJECT_CTOR(index64_object)
typedef uint64_t key_type;
static const int number_of_keys = 1;
id_type id;
table_id t_id;
uint64_t primary_key;
uint64_t secondary_key;
account_name payer;
};
using index64_index = chainbase::shared_multi_index_container<
index64_object,
indexed_by<
ordered_unique<tag<by_id>, member<index64_object, index64_object::id_type, &index64_object::id>>,
ordered_unique<tag<by_primary>,
composite_key< index64_object,
member<index64_object, table_id, &index64_object::t_id>,
member<index64_object, uint64_t, &index64_object::primary_key>
>,
composite_key_compare< std::less<table_id>, std::less<uint64_t> >
>,
ordered_unique<tag<by_secondary>,
composite_key< index64_object,
member<index64_object, uint64_t, &index64_object::secondary_key>,
member<index64_object, uint64_t, &index64_object::primary_key>
>
>
>
>;
*/
struct shared_string_less {
bool operator()( const char* a, const char* b )const {
return less(a, b);
}
bool operator()( const std::string& a, const char* b )const {
return less(a.c_str(), b);
}
bool operator()( const char* a, const std::string& b )const {
return less(a, b.c_str());
}
inline bool less( const char* a, const char* b )const{
return std::strcmp( a, b ) < 0;
}
};
struct keystr_value_object : public chainbase::object<keystr_value_object_type, keystr_value_object> {
OBJECT_CTOR(keystr_value_object, (primary_key)(value))
typedef std::string key_type;
static const int number_of_keys = 1;
const char* data() const { return primary_key.data(); }
id_type id;
table_id t_id;
shared_string primary_key;
shared_string value;
account_name payer;
};
using keystr_value_index = chainbase::shared_multi_index_container<
keystr_value_object,
indexed_by<
ordered_unique<tag<by_id>, member<keystr_value_object, keystr_value_object::id_type, &keystr_value_object::id>>,
ordered_unique<tag<by_scope_primary>,
composite_key< keystr_value_object,
member<keystr_value_object, table_id, &keystr_value_object::t_id>,
const_mem_fun<keystr_value_object, const char*, &keystr_value_object::data>
>,
composite_key_compare< std::less<table_id>, shared_string_less>
>
>
>;
struct key128x128_value_object : public chainbase::object<key128x128_value_object_type, key128x128_value_object> {
OBJECT_CTOR(key128x128_value_object, (value))
typedef uint128_t key_type;
static const int number_of_keys = 2;
id_type id;
table_id t_id;
uint128_t primary_key;
uint128_t secondary_key;
shared_string value;
account_name payer;
};
using key128x128_value_index = chainbase::shared_multi_index_container<
key128x128_value_object,
indexed_by<
ordered_unique<tag<by_id>, member<key128x128_value_object, key128x128_value_object::id_type, &key128x128_value_object::id>>,
ordered_unique<tag<by_scope_primary>,
composite_key< key128x128_value_object,
member<key128x128_value_object, table_id, &key128x128_value_object::t_id>,
member<key128x128_value_object, uint128_t, &key128x128_value_object::primary_key>,
member<key128x128_value_object, uint128_t, &key128x128_value_object::secondary_key>
>,
composite_key_compare< std::less<table_id>,std::less<uint128_t>,std::less<uint128_t> >
>,
ordered_unique<tag<by_scope_secondary>,
composite_key< key128x128_value_object,
member<key128x128_value_object, table_id, &key128x128_value_object::t_id>,
member<key128x128_value_object, uint128_t, &key128x128_value_object::secondary_key>,
member<key128x128_value_object, typename key128x128_value_object::id_type, &key128x128_value_object::id>
>,
composite_key_compare< std::less<table_id>,std::less<uint128_t>,std::less<typename key128x128_value_object::id_type> >
>
>
>;
struct key64x64_value_object : public chainbase::object<key64x64_value_object_type, key64x64_value_object> {
OBJECT_CTOR(key64x64_value_object, (value))
typedef uint64_t key_type;
static const int number_of_keys = 2;
id_type id;
table_id t_id;
uint64_t primary_key;
uint64_t secondary_key;
shared_string value;
account_name payer;
};
using key64x64_value_index = chainbase::shared_multi_index_container<
key64x64_value_object,
indexed_by<
ordered_unique<tag<by_id>, member<key64x64_value_object, key64x64_value_object::id_type, &key64x64_value_object::id>>,
ordered_unique<tag<by_scope_primary>,
composite_key< key64x64_value_object,
member<key64x64_value_object, table_id, &key64x64_value_object::t_id>,
member<key64x64_value_object, uint64_t, &key64x64_value_object::primary_key>,
member<key64x64_value_object, uint64_t, &key64x64_value_object::secondary_key>
>,
composite_key_compare< std::less<table_id>,std::less<uint64_t>,std::less<uint64_t> >
>,
ordered_unique<tag<by_scope_secondary>,
composite_key< key64x64_value_object,
member<key64x64_value_object, table_id, &key64x64_value_object::t_id>,
member<key64x64_value_object, uint64_t, &key64x64_value_object::secondary_key>,
member<key64x64_value_object, typename key64x64_value_object::id_type, &key64x64_value_object::id>
>,
composite_key_compare< std::less<table_id>,std::less<uint64_t>,std::less<typename key64x64_value_object::id_type> >
>
>
>;
struct key64x64x64_value_object : public chainbase::object<key64x64x64_value_object_type, key64x64x64_value_object> {
OBJECT_CTOR(key64x64x64_value_object, (value))
typedef uint64_t key_type;
static const int number_of_keys = 3;
id_type id;
table_id t_id;
uint64_t primary_key;
uint64_t secondary_key;
uint64_t tertiary_key;
shared_string value;
account_name payer;
};
using key64x64x64_value_index = chainbase::shared_multi_index_container<
key64x64x64_value_object,
indexed_by<
ordered_unique<tag<by_id>, member<key64x64x64_value_object, key64x64x64_value_object::id_type, &key64x64x64_value_object::id>>,
ordered_unique<tag<by_scope_primary>,
composite_key< key64x64x64_value_object,
member<key64x64x64_value_object, table_id, &key64x64x64_value_object::t_id>,
member<key64x64x64_value_object, uint64_t, &key64x64x64_value_object::primary_key>,
member<key64x64x64_value_object, uint64_t, &key64x64x64_value_object::secondary_key>,
member<key64x64x64_value_object, uint64_t, &key64x64x64_value_object::tertiary_key>
>,
composite_key_compare< std::less<table_id>,std::less<uint64_t>,std::less<uint64_t>,std::less<uint64_t> >
>,
ordered_unique<tag<by_scope_secondary>,
composite_key< key64x64x64_value_object,
member<key64x64x64_value_object, table_id, &key64x64x64_value_object::t_id>,
member<key64x64x64_value_object, uint64_t, &key64x64x64_value_object::secondary_key>,
member<key64x64x64_value_object, uint64_t, &key64x64x64_value_object::tertiary_key>,
member<key64x64x64_value_object, typename key64x64x64_value_object::id_type, &key64x64x64_value_object::id>
>
>,
ordered_unique<tag<by_scope_tertiary>,
composite_key< key64x64x64_value_object,
member<key64x64x64_value_object, table_id, &key64x64x64_value_object::t_id>,
member<key64x64x64_value_object, uint64_t, &key64x64x64_value_object::tertiary_key>,
member<key64x64x64_value_object, typename key64x64x64_value_object::id_type, &key64x64x64_value_object::id>
>,
composite_key_compare< std::less<table_id>,std::less<uint64_t>,std::less<typename key64x64x64_value_object::id_type> >
>
>
>;
} } } // namespace eosio::chain::contracts
CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::table_id_object, eosio::chain::contracts::table_id_multi_index)
CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::key_value_object, eosio::chain::contracts::key_value_index)
CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::keystr_value_object, eosio::chain::contracts::keystr_value_index)
CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::key128x128_value_object, eosio::chain::contracts::key128x128_value_index)
CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::key64x64_value_object, eosio::chain::contracts::key64x64_value_index)
CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::key64x64x64_value_object, eosio::chain::contracts::key64x64x64_value_index)
CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::index64_object, eosio::chain::contracts::index64_index)
CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::index128_object, eosio::chain::contracts::index128_index)
......@@ -397,7 +167,3 @@ CHAINBASE_SET_INDEX_TYPE(eosio::chain::contracts::index_double_object, eosio::ch
FC_REFLECT(eosio::chain::contracts::table_id_object, (id)(code)(scope)(table) )
FC_REFLECT(eosio::chain::contracts::key_value_object, (id)(t_id)(primary_key)(value)(payer) )
FC_REFLECT(eosio::chain::contracts::keystr_value_object, (id)(t_id)(primary_key)(value)(payer) )
FC_REFLECT(eosio::chain::contracts::key128x128_value_object, (id)(t_id)(primary_key)(secondary_key)(value)(payer) )
FC_REFLECT(eosio::chain::contracts::key64x64_value_object, (id)(t_id)(primary_key)(secondary_key)(value)(payer) )
FC_REFLECT(eosio::chain::contracts::key64x64x64_value_object, (id)(t_id)(primary_key)(secondary_key)(tertiary_key)(value)(payer) )
......@@ -118,8 +118,6 @@ namespace eosio { namespace chain {
permission_link_object_type,
action_code_object_type,
key_value_object_type,
key128x128_value_object_type,
key64x64_value_object_type,
index64_object_type,
index128_object_type,
index256_object_type,
......@@ -141,8 +139,6 @@ namespace eosio { namespace chain {
producer_votes_object_type, ///< Defined by native_contract library
producer_schedule_object_type, ///< Defined by native_contract library
proxy_vote_object_type, ///< Defined by native_contract library
key64x64x64_value_object_type,
keystr_value_object_type,
scope_sequence_object_type,
bandwidth_usage_object_type,
compute_usage_object_type,
......@@ -178,8 +174,6 @@ FC_REFLECT_ENUM(eosio::chain::object_type,
(permission_link_object_type)
(action_code_object_type)
(key_value_object_type)
(key128x128_value_object_type)
(key64x64_value_object_type)
(index64_object_type)
(index128_object_type)
(index256_object_type)
......@@ -201,8 +195,6 @@ FC_REFLECT_ENUM(eosio::chain::object_type,
(producer_votes_object_type)
(producer_schedule_object_type)
(proxy_vote_object_type)
(key64x64x64_value_object_type)
(keystr_value_object_type)
(scope_sequence_object_type)
(bandwidth_usage_object_type)
(compute_usage_object_type)
......
......@@ -265,12 +265,6 @@ const chain_controller& chain_plugin::chain() const { return *my->chain; }
namespace chain_apis {
const string read_only::KEYi64 = "i64";
const string read_only::KEYstr = "str";
const string read_only::KEYi128i128 = "i128i128";
const string read_only::KEYi64i64i64 = "i64i64i64";
const string read_only::PRIMARY = "primary";
const string read_only::SECONDARY = "secondary";
const string read_only::TERTIARY = "tertiary";
read_only::get_info_results read_only::get_info(const read_only::get_info_params&) const {
auto itoh = [](uint32_t n, size_t hlen = sizeof(uint32_t)<<1) {
......@@ -313,26 +307,11 @@ string get_table_type( const abi_def& abi, const name& table_name ) {
read_only::get_table_rows_result read_only::get_table_rows( const read_only::get_table_rows_params& p )const {
const abi_def abi = get_abi( db, p.code );
auto table_type = get_table_type( abi, p.table );
auto table_key = PRIMARY;
if( table_type == KEYi64 ) {
return get_table_rows_ex<contracts::key_value_index, contracts::by_scope_primary>(p,abi);
} else if( table_type == KEYstr ) {
return get_table_rows_ex<contracts::keystr_value_index, contracts::by_scope_primary>(p,abi);
} else if( table_type == KEYi128i128 ) {
if( table_key == PRIMARY )
return get_table_rows_ex<contracts::key128x128_value_index, contracts::by_scope_primary>(p,abi);
if( table_key == SECONDARY )
return get_table_rows_ex<contracts::key128x128_value_index, contracts::by_scope_secondary>(p,abi);
} else if( table_type == KEYi64i64i64 ) {
if( table_key == PRIMARY )
return get_table_rows_ex<contracts::key64x64x64_value_index, contracts::by_scope_primary>(p,abi);
if( table_key == SECONDARY )
return get_table_rows_ex<contracts::key64x64x64_value_index, contracts::by_scope_secondary>(p,abi);
if( table_key == TERTIARY )
return get_table_rows_ex<contracts::key64x64x64_value_index, contracts::by_scope_tertiary>(p,abi);
}
FC_ASSERT( false, "invalid table type/key ${type}/${key}", ("type",table_type)("key",table_key)("abi",abi));
FC_ASSERT( false, "invalid table type/key ${type}/${key}", ("type",table_type)("abi",abi));
}
vector<asset> read_only::get_currency_balance( const read_only::get_currency_balance_params& p )const {
......
......@@ -49,12 +49,6 @@ class read_only {
public:
static const string KEYi64;
static const string KEYstr;
static const string KEYi128i128;
static const string KEYi64i64i64;
static const string PRIMARY;
static const string SECONDARY;
static const string TERTIARY;
read_only(const chain_controller& db)
: db(db) {}
......@@ -197,34 +191,6 @@ public:
memcpy( data.data(), obj.value.data(), obj.value.size() );
}
static void copy_row(const chain::contracts::keystr_value_object& obj, vector<char>& data) {
data.resize( obj.primary_key.size() + obj.value.size() + 8 );
fc::datastream<char*> ds(data.data(), data.size());
fc::raw::pack(ds, obj.primary_key);
ds.write(obj.value.data(), obj.value.size());
data.resize(ds.tellp());
}
static void copy_row(const chain::contracts::key128x128_value_object& obj, vector<char>& data) {
data.resize( 2*sizeof(uint128_t) + obj.value.size() );
memcpy( data.data(), &obj.primary_key, sizeof(uint128_t) );
memcpy( data.data()+sizeof(uint128_t), &obj.secondary_key, sizeof(uint128_t) );
memcpy( data.data()+2*sizeof(uint128_t), obj.value.data(), obj.value.size() );
}
static void copy_row(const chain::contracts::key64x64x64_value_object& obj, vector<char>& data) {
data.resize( 3*sizeof(uint64_t) + obj.value.size() );
memcpy( data.data(), &obj.primary_key, sizeof(uint64_t) );
memcpy( data.data()+sizeof(uint64_t), &obj.secondary_key, sizeof(uint64_t) );
memcpy( data.data()+2*sizeof(uint64_t), &obj.tertiary_key, sizeof(uint64_t) );
memcpy( data.data()+3*sizeof(uint64_t), obj.value.data(), obj.value.size() );
}
static void copy_inline_row(const chain::contracts::key64x64x64_value_object& obj, vector<char>& data) {
data.resize( obj.value.size() );
memcpy( data.data(), obj.value.data(), obj.value.size() );
}
template<typename IndexType, typename Scope, typename Function>
void walk_table(const name& code, const name& scope, const name& table, Function f) const
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册