+1 for always returning StructSet.  Just this change would have pretty
minimal impact.  We took a slightly more in-depth look at the code, and it
doesn't look like there's anything preventing us from converting most of
this stuff to standard library code.  StructSet could be replaced with
std::map<std::string, std::shared_ptr<Struct> >, and client developers
really wouldn't lose anything of value in the process.

On Wed, Aug 15, 2018 at 5:25 AM Jacob Barrett <jbarr...@pivotal.io> wrote:

> Oh wouldn’t it be nice if it was asynchronous... :(
>
> > On Aug 14, 2018, at 8:56 PM, David Kimura <dkim...@pivotal.io> wrote:
> >
> > If this is a non-blocking function (and maybe even if it isn't), then it
> > might be worth considering a future/promise contract.   Perhaps something
> > like folly which provides a very rich interface.
> >
> > Thanks,
> > David
> >
> >> On Tue, Aug 14, 2018 at 12:57 PM, Jacob Barrett <jbarr...@pivotal.io>
> wrote:
> >>
> >> If we are going to change it I wonder if we can’t do better or look for
> >> some other standard to adopt.
> >>
> >> For the C++ side could we adopt something that is maybe std::tuple or
> >> std::vector based? Tuple probably doesn’t work because it’s fixed at
> >> compile time but std::vector and StructSet are very similar in behavior.
> >>
> >> -Jake
> >>
> >>
> >>> On Aug 14, 2018, at 11:01 AM, Dan Smith <dsm...@pivotal.io> wrote:
> >>>
> >>> +1 for just having StructSet.
> >>>
> >>> Return types should always be strongly typed, the user shouldn't have
> to
> >>> introspect or guess based on their query what the return type actually
> >> will
> >>> be at runtime.
> >>>
> >>> If we think there is value in having separate ResultSet and StructSet
> >>> results, we could have a separate query::executeXXX method for each
> type.
> >>> But I think just returning StructSet seems reasonable.
> >>>
> >>> The Java API for query is even worse. I think the Java API actually
> >> returns
> >>> an Object, which the user has to cast into one of three things - an
> >>> individual value, SelectResult of values, or a SelectResults of
> structs.
> >> We
> >>> should fix that too!
> >>>
> >>> -Dan
> >>>
> >>> On Tue, Aug 14, 2018 at 10:47 AM, Anilkumar Gingade <
> aging...@pivotal.io
> >>>
> >>> wrote:
> >>>
> >>>> In Java, they are separated so that the results can be managed
> >> effectively.
> >>>> For example StructSet has its own implementation to manage the query
> >>>> results that are structs (more than one projection attributes).
> >>>>
> >>>> -Anil
> >>>>
> >>>>
> >>>>
> >>>>> On Tue, Aug 14, 2018 at 8:28 AM David Kimura <dkim...@pivotal.io>
> >> wrote:
> >>>>>
> >>>>> I have a couple questions:
> >>>>>
> >>>>> Do you have an idea or theories of what was the original intent
> behind
> >>>>> separating ResultSet and StructSet?
> >>>>>
> >>>>> Is execute a blocking or non-blocking call and does the interface
> have
> >>>> any
> >>>>> guarantee of that?
> >>>>>
> >>>>> Thanks,
> >>>>> David
> >>>>>
> >>>>> On Mon, Aug 13, 2018 at 4:06 PM, Ernest Burghardt <
> >> eburgha...@pivotal.io
> >>>>>
> >>>>> wrote:
> >>>>>
> >>>>>> Currently, geode-native's query::execute returns a
> >>>>>> shared_ptr<SelectResults> and
> >>>>>> that pointer can be either ResultSet or StructSet.
> >>>>>>
> >>>>>>
> >>>>>> RemoteQuery::execute contains logical code to determine with
> >>>> QueryResults
> >>>>>> are greater than 0... We should look at removing this logic and only
> >>>>>> returning StructSets
> >>>>>> This allows removal of ResultSet which will streamline the API and
> >>>>>> associated code...
> >>>>>>
> >>>>>> This duality is unnecessary and should be removed.
> >>>>>> I am proposing that the results only return  StructSet
> >>>>>>
> >>>>>> Best,
> >>>>>> EB
> >>>>>>
> >>>>>
> >>>>
> >>
>

Reply via email to