Make indexes on blockchain objects related to betting markets into
unique indexes to ensure the order betting market groups are resolved is consistent between different nodes. This bumps the database version which will trigger a replay on the first run after this upgrade.
This commit is contained in:
parent
7102d06ddb
commit
1052f49f5d
5 changed files with 32 additions and 12 deletions
|
|
@ -247,8 +247,12 @@ typedef multi_index_container<
|
|||
betting_market_group_object,
|
||||
indexed_by<
|
||||
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
|
||||
ordered_non_unique< tag<by_event_id>, member<betting_market_group_object, event_id_type, &betting_market_group_object::event_id> >,
|
||||
ordered_non_unique< tag<by_settling_time>, member<betting_market_group_object, fc::optional<fc::time_point_sec>, &betting_market_group_object::settling_time> >
|
||||
ordered_unique< tag<by_event_id>, composite_key<betting_market_group_object,
|
||||
member<betting_market_group_object, event_id_type, &betting_market_group_object::event_id>,
|
||||
member<object, object_id_type, &object::id> > >,
|
||||
ordered_unique< tag<by_settling_time>, composite_key<betting_market_group_object,
|
||||
member<betting_market_group_object, fc::optional<fc::time_point_sec>, &betting_market_group_object::settling_time>,
|
||||
member<object, object_id_type, &object::id> > >
|
||||
> > betting_market_group_object_multi_index_type;
|
||||
typedef generic_index<betting_market_group_object, betting_market_group_object_multi_index_type> betting_market_group_object_index;
|
||||
|
||||
|
|
@ -256,7 +260,9 @@ typedef multi_index_container<
|
|||
betting_market_object,
|
||||
indexed_by<
|
||||
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
|
||||
ordered_non_unique< tag<by_betting_market_group_id>, member<betting_market_object, betting_market_group_id_type, &betting_market_object::group_id> >
|
||||
ordered_unique< tag<by_betting_market_group_id>, composite_key<betting_market_object,
|
||||
member<betting_market_object, betting_market_group_id_type, &betting_market_object::group_id>,
|
||||
member<object, object_id_type, &object::id> > >
|
||||
> > betting_market_object_multi_index_type;
|
||||
|
||||
typedef generic_index<betting_market_object, betting_market_object_multi_index_type> betting_market_object_index;
|
||||
|
|
@ -593,7 +599,9 @@ typedef multi_index_container<
|
|||
indexed_by<
|
||||
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
|
||||
ordered_unique< tag<by_odds>, identity<bet_object>, compare_bet_by_odds >,
|
||||
ordered_non_unique< tag<by_betting_market_id>, member<bet_object, betting_market_id_type, &bet_object::betting_market_id> >,
|
||||
ordered_unique< tag<by_betting_market_id>, composite_key<bet_object,
|
||||
member<bet_object, betting_market_id_type, &bet_object::betting_market_id>,
|
||||
member<object, object_id_type, &object::id> > >,
|
||||
ordered_unique< tag<by_bettor_and_odds>, identity<bet_object>, compare_bet_by_bettor_then_odds > > > bet_object_multi_index_type;
|
||||
typedef generic_index<bet_object, bet_object_multi_index_type> bet_object_index;
|
||||
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@
|
|||
#define GRAPHENE_RECENTLY_MISSED_COUNT_INCREMENT 4
|
||||
#define GRAPHENE_RECENTLY_MISSED_COUNT_DECREMENT 3
|
||||
|
||||
#define GRAPHENE_CURRENT_DB_VERSION "PPY2.0"
|
||||
#define GRAPHENE_CURRENT_DB_VERSION "PPY2.1"
|
||||
|
||||
#define GRAPHENE_IRREVERSIBLE_THRESHOLD (70 * GRAPHENE_1_PERCENT)
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@
|
|||
#include <graphene/db/object.hpp>
|
||||
#include <graphene/db/generic_index.hpp>
|
||||
|
||||
#include <boost/multi_index/composite_key.hpp>
|
||||
|
||||
namespace graphene { namespace chain {
|
||||
|
||||
class database;
|
||||
|
|
@ -49,7 +51,9 @@ typedef multi_index_container<
|
|||
event_group_object,
|
||||
indexed_by<
|
||||
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
|
||||
ordered_non_unique< tag<by_sport_id>, member< event_group_object, sport_id_type, &event_group_object::sport_id > > >
|
||||
ordered_unique< tag<by_sport_id>, composite_key<event_group_object,
|
||||
member< event_group_object, sport_id_type, &event_group_object::sport_id >,
|
||||
member<object, object_id_type, &object::id> > > >
|
||||
> event_group_object_multi_index_type;
|
||||
|
||||
typedef generic_index<event_group_object, event_group_object_multi_index_type> event_group_object_index;
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@
|
|||
#include <graphene/db/generic_index.hpp>
|
||||
#include <graphene/chain/protocol/event.hpp>
|
||||
|
||||
#include <boost/multi_index/composite_key.hpp>
|
||||
|
||||
namespace graphene { namespace chain {
|
||||
class event_object;
|
||||
} }
|
||||
|
|
@ -100,8 +102,12 @@ typedef multi_index_container<
|
|||
event_object,
|
||||
indexed_by<
|
||||
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
|
||||
ordered_non_unique< tag<by_event_group_id>, member< event_object, event_group_id_type, &event_object::event_group_id > >,
|
||||
ordered_non_unique< tag<by_event_status>, const_mem_fun< event_object, event_status, &event_object::get_status > > > > event_object_multi_index_type;
|
||||
ordered_unique< tag<by_event_group_id>, composite_key<event_object,
|
||||
member< event_object, event_group_id_type, &event_object::event_group_id >,
|
||||
member<object, object_id_type, &object::id> > >,
|
||||
ordered_unique< tag<by_event_status>, composite_key<event_object,
|
||||
const_mem_fun< event_object, event_status, &event_object::get_status >,
|
||||
member<object, object_id_type, &object::id> > > > > event_object_multi_index_type;
|
||||
|
||||
typedef generic_index<event_object, event_object_multi_index_type> event_object_index;
|
||||
|
||||
|
|
|
|||
|
|
@ -133,14 +133,16 @@ namespace graphene { namespace chain {
|
|||
tournament_object,
|
||||
indexed_by<
|
||||
ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
|
||||
ordered_non_unique< tag<by_registration_deadline>,
|
||||
ordered_unique< tag<by_registration_deadline>,
|
||||
composite_key<tournament_object,
|
||||
const_mem_fun<tournament_object, tournament_state, &tournament_object::get_state>,
|
||||
const_mem_fun<tournament_object, time_point_sec, &tournament_object::get_registration_deadline> > >,
|
||||
ordered_non_unique< tag<by_start_time>,
|
||||
const_mem_fun<tournament_object, time_point_sec, &tournament_object::get_registration_deadline>,
|
||||
member< object, object_id_type, &object::id > > >,
|
||||
ordered_unique< tag<by_start_time>,
|
||||
composite_key<tournament_object,
|
||||
const_mem_fun<tournament_object, tournament_state, &tournament_object::get_state>,
|
||||
member<tournament_object, optional<time_point_sec>, &tournament_object::start_time> > >
|
||||
member<tournament_object, optional<time_point_sec>, &tournament_object::start_time>,
|
||||
member< object, object_id_type, &object::id > > >
|
||||
>
|
||||
> tournament_object_multi_index_type;
|
||||
typedef generic_index<tournament_object, tournament_object_multi_index_type> tournament_index;
|
||||
|
|
|
|||
Loading…
Reference in a new issue