Appending in FlatBuffer
We already are using a flatbuffer with a similar scheme
namespace potter;
union Magic { Weapon, Wand }
table Weapon {
name:string;
power:int;
}
table Wand {
make:string;
animal:string;
}
table MagicHolder {
name:string;
age:int;
magic:Magic;
}
root_type MagicHolder;
Now, if we want to add two things.
level:string
in theMagicHolder
- Under the
Wand
akey:value
type, wherekey:string
, andvalue
can be eitherstring or int or float or bool
What I’m trying is
table MagicHolder {
name:string;
age:int;
level:string; /*new addition*/
magic:Magic;
}
table KeyValue {
key:string;
vint:int;
vfloat:float;
vbool:bool;
vstring:string;
vtype:string; /* since I cannot differentiate between bool set or not, trying to store type here */
}
table Wand {
make:string;
animal:string;
kv:KeyValue;
}
Is this the best approach? What would be the pros/cons.. Any other recommended ways to do this new additions more efficiently
flatbuffers
add a comment |
We already are using a flatbuffer with a similar scheme
namespace potter;
union Magic { Weapon, Wand }
table Weapon {
name:string;
power:int;
}
table Wand {
make:string;
animal:string;
}
table MagicHolder {
name:string;
age:int;
magic:Magic;
}
root_type MagicHolder;
Now, if we want to add two things.
level:string
in theMagicHolder
- Under the
Wand
akey:value
type, wherekey:string
, andvalue
can be eitherstring or int or float or bool
What I’m trying is
table MagicHolder {
name:string;
age:int;
level:string; /*new addition*/
magic:Magic;
}
table KeyValue {
key:string;
vint:int;
vfloat:float;
vbool:bool;
vstring:string;
vtype:string; /* since I cannot differentiate between bool set or not, trying to store type here */
}
table Wand {
make:string;
animal:string;
kv:KeyValue;
}
Is this the best approach? What would be the pros/cons.. Any other recommended ways to do this new additions more efficiently
flatbuffers
Level string needs to be at the end of table. We can't evolve schema safely by inserting fields in between.
– Shivendra Agarwal
Nov 26 '18 at 16:05
I also thought so.. however, the last value is of type Magic, which is a union.. so couldlevel
still be after a union (which is of different type)
– J Aamish
Nov 26 '18 at 16:07
Can create a union of all the value types... Kept in KeyValue
– Shivendra Agarwal
Nov 26 '18 at 16:07
1
Yes you may and should add new entries (union or not) at the end of table.
– Shivendra Agarwal
Nov 26 '18 at 16:09
add a comment |
We already are using a flatbuffer with a similar scheme
namespace potter;
union Magic { Weapon, Wand }
table Weapon {
name:string;
power:int;
}
table Wand {
make:string;
animal:string;
}
table MagicHolder {
name:string;
age:int;
magic:Magic;
}
root_type MagicHolder;
Now, if we want to add two things.
level:string
in theMagicHolder
- Under the
Wand
akey:value
type, wherekey:string
, andvalue
can be eitherstring or int or float or bool
What I’m trying is
table MagicHolder {
name:string;
age:int;
level:string; /*new addition*/
magic:Magic;
}
table KeyValue {
key:string;
vint:int;
vfloat:float;
vbool:bool;
vstring:string;
vtype:string; /* since I cannot differentiate between bool set or not, trying to store type here */
}
table Wand {
make:string;
animal:string;
kv:KeyValue;
}
Is this the best approach? What would be the pros/cons.. Any other recommended ways to do this new additions more efficiently
flatbuffers
We already are using a flatbuffer with a similar scheme
namespace potter;
union Magic { Weapon, Wand }
table Weapon {
name:string;
power:int;
}
table Wand {
make:string;
animal:string;
}
table MagicHolder {
name:string;
age:int;
magic:Magic;
}
root_type MagicHolder;
Now, if we want to add two things.
level:string
in theMagicHolder
- Under the
Wand
akey:value
type, wherekey:string
, andvalue
can be eitherstring or int or float or bool
What I’m trying is
table MagicHolder {
name:string;
age:int;
level:string; /*new addition*/
magic:Magic;
}
table KeyValue {
key:string;
vint:int;
vfloat:float;
vbool:bool;
vstring:string;
vtype:string; /* since I cannot differentiate between bool set or not, trying to store type here */
}
table Wand {
make:string;
animal:string;
kv:KeyValue;
}
Is this the best approach? What would be the pros/cons.. Any other recommended ways to do this new additions more efficiently
flatbuffers
flatbuffers
asked Nov 26 '18 at 15:43
J AamishJ Aamish
1848
1848
Level string needs to be at the end of table. We can't evolve schema safely by inserting fields in between.
– Shivendra Agarwal
Nov 26 '18 at 16:05
I also thought so.. however, the last value is of type Magic, which is a union.. so couldlevel
still be after a union (which is of different type)
– J Aamish
Nov 26 '18 at 16:07
Can create a union of all the value types... Kept in KeyValue
– Shivendra Agarwal
Nov 26 '18 at 16:07
1
Yes you may and should add new entries (union or not) at the end of table.
– Shivendra Agarwal
Nov 26 '18 at 16:09
add a comment |
Level string needs to be at the end of table. We can't evolve schema safely by inserting fields in between.
– Shivendra Agarwal
Nov 26 '18 at 16:05
I also thought so.. however, the last value is of type Magic, which is a union.. so couldlevel
still be after a union (which is of different type)
– J Aamish
Nov 26 '18 at 16:07
Can create a union of all the value types... Kept in KeyValue
– Shivendra Agarwal
Nov 26 '18 at 16:07
1
Yes you may and should add new entries (union or not) at the end of table.
– Shivendra Agarwal
Nov 26 '18 at 16:09
Level string needs to be at the end of table. We can't evolve schema safely by inserting fields in between.
– Shivendra Agarwal
Nov 26 '18 at 16:05
Level string needs to be at the end of table. We can't evolve schema safely by inserting fields in between.
– Shivendra Agarwal
Nov 26 '18 at 16:05
I also thought so.. however, the last value is of type Magic, which is a union.. so could
level
still be after a union (which is of different type)– J Aamish
Nov 26 '18 at 16:07
I also thought so.. however, the last value is of type Magic, which is a union.. so could
level
still be after a union (which is of different type)– J Aamish
Nov 26 '18 at 16:07
Can create a union of all the value types... Kept in KeyValue
– Shivendra Agarwal
Nov 26 '18 at 16:07
Can create a union of all the value types... Kept in KeyValue
– Shivendra Agarwal
Nov 26 '18 at 16:07
1
1
Yes you may and should add new entries (union or not) at the end of table.
– Shivendra Agarwal
Nov 26 '18 at 16:09
Yes you may and should add new entries (union or not) at the end of table.
– Shivendra Agarwal
Nov 26 '18 at 16:09
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53484587%2fappending-in-flatbuffer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53484587%2fappending-in-flatbuffer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Level string needs to be at the end of table. We can't evolve schema safely by inserting fields in between.
– Shivendra Agarwal
Nov 26 '18 at 16:05
I also thought so.. however, the last value is of type Magic, which is a union.. so could
level
still be after a union (which is of different type)– J Aamish
Nov 26 '18 at 16:07
Can create a union of all the value types... Kept in KeyValue
– Shivendra Agarwal
Nov 26 '18 at 16:07
1
Yes you may and should add new entries (union or not) at the end of table.
– Shivendra Agarwal
Nov 26 '18 at 16:09