Skip to main content
Question

Why SDK example Concatenate.cpp is missing at 8.1?

  • August 31, 2017
  • 6 replies
  • 33 views

Moshe
Forum|alt.badge.img
  • Participating Frequently

Hi,

Do you know why the SDK example Concatenate.cpp which was available with 8.0 at /opt/vertica/sdk/examples is missing at 8.1?

We know that agg_concatenate was available at Vertica 8.0 and is still available on Github.

Thanks,
Moshe

6 replies

mcellio
  • Participating Frequently
  • August 31, 2017

We started to do code reviews of all our published examples and reviewers felt this one was weak. The new example LongestString.cpp replaces it. Thanks for pointing out it's still on GitHub; it shouldn't be.

See VER-48901 for more info.


Moshe
Forum|alt.badge.img
  • Author
  • Participating Frequently
  • August 31, 2017

Thank you Monica,
I saw the Jira, however we get complains from customers who rely on previous provided SDK examples and refer to those as part of the product.
Is it possible to continue and provide those for backward compatibility ?
Please also consider that agg_concatenate is very useful and was requested by many in the past.


mcellio
  • Participating Frequently
  • August 31, 2017

Moshe, can you tell me more about how customers are relying on old examples? What are they doing with them? The intended purpose of the examples is to give people writing UDxs something to look at (and probably cut/paste from, if we're being realistic). As new features become available we sometimes add examples. Sometimes we have to revise examples; for example, apportioned load changed some previously-shipped examples and they were updated in later versions. If somebody is still using the old versions with newer versions of Vertica, that could be problematic.

I can discuss this specific case with the developers involved, if you can help us understand the use case better. Thanks!


Maurizio
Forum|alt.badge.img
  • Participating Frequently
  • August 31, 2017

I find the first comment in the Jira "Concatenate seems not very useful" and customers reaction "Why did you remove Concatenate.cpp?" a little bit antithetic. Can we suggest these customers to compile/deploy the "old" (8.0) code under 8.1?


mcellio
  • Participating Frequently
  • August 31, 2017

@Maurizio if you click through to the code review you'll find more detailed comments from the developers, though they are not for public consumption. The team felt the current example wasn't realistic and also had some technical flaws, and we addressed those issues by replacing the example.

Compiling and running examples from Release N probably works in Release N+1, if there haven't been API changes (ABI check). (You'd want to check specific cases before advising a customer to do it.) But they might not always be the best practice any more; for example, the addition of apportioned load meant some older examples were no longer the best way to do load, and the recent change to make apportioned load and cooperative parse work together also called for improving some of the examples. The examples reflect our recommendations for extending Vertica, and those recommendations can evolve over time or with product changes.


Moshe
Forum|alt.badge.img
  • Author
  • Participating Frequently
  • September 3, 2017
  • Vertica only *

Q: What customers are doing with the examples and how customers are relying on old examples?

A: In general, customers rely on the provided SDK examples and refer to those as part of the product.
To show how much it is important to maintain “older” SDK examples, here are some categories which reveal on field in various scenarios.

  1. Missing features complementary
    In this category, we count all those examples that support the V sales process when essential feature is lacking.
    Some customers enrich their solution with V SDK examples “as is” or with few enhancements.
    For these customers it is essential to continue and provide the same SDK examples for backwards compatibility.

In case where the V product change and some older examples are no longer the best way to implement things, customers’ expectations are to get from V a new SDK example with up-to-date code for the same specific need.
Hence, the code example might change, but function name and parameters will not, for backwards compatibility. In addition, adding SDK code version numbers can help customers to track major modifications.

When prospects request for built-in features that do not exist,
(Like agg_concatenate, which is available as built in function or code example in some other products),
V sales force on field say it does exist in V, as shown in the V SDK Examples.
Sometimes, (like now) a specific sale opportunity conditioned by the existence of such SDK example.

Giving an example with known limitations, (like maximum number of rows or accuracy) is better than not providing an example at all, given that limitations mentioned in the code comments / readme file or release notes.

Prospects with “open source freaks”, accept useful code example, as “open source” parts of the V product.
The advantage of such is critical for our sales force to close deals in places where “open source” solutions requested.

  1. Vertica Documentation extension
    Many customers say they learn much more from SDK examples than from V documentation and its examples.
    Mainly because V documentation and its examples (as it should be) usually demonstrate the accurate syntax use and not a complete real-world implementation.
    V SDK examples help these customers to learn how to apply solutions for their real-world problems, using V best practices as a basis for their major projects.

  2. Use case evidence
    Providing large number of SDK examples to cover many use cases is extremely important for sales situations where customers request references for their specific use case need.
    “Show me who else does it with V?” - They ask.
    “We have a solid proof for you mister customer” - we might say.
    “Some of the SDK examples are based on other customers’ best practices”.