Major revision to YottaDB Acculturation Guide

148 views
Skip to first unread message

K.S. Bhaskar

unread,
Dec 18, 2019, 6:09:06 PM12/18/19
to Enterprise Web Developer Community
We have just published a major revision to the YottaDB Acculturation Guide / Workshop (https://docs.yottadb.com/AcculturationGuide/acculturation.html).

  • Demonstrating that YottaDB is a language-agnostic NoSQL database, not just an implementation of M, the workshop includes functionally equivalent sample programs in C, Go, and M, and the workshop demonstrates a database that is concurrently updated by application processes in the three languages. Going forward, we hope to add functionally equivalent sample programs in more languages.
  • The workshop demonstrates use of the YottaDB's ydb_env_set script, which was significantly enhanced in r1.26 (the most current release of YottaDB is r1.28). As we are fastidious about upward compatibility in moving to newer YottaDB releases from older releases and from GT.M, existing application configurations will work unchanged. But new application environments are easier to deploy using ydb_env_set which works with C, Go, and M programs.
  • Benefiting from the fact that Debian 10 is a Supported platform for YottaDB, the Acculturation Workshop now uses a Debian 10 virtual machine, which has a lighter footprint than the previous Ubuntu 18.04 LTS virtual machine.

Please do try the new Acculturation Workshop, and please do check out accessing YottaDB databases from multiple languages. As this is a major revision, please report any glitches to me. Thank you for using YottaDB.

Regards
– Bhaskar

K.S. Bhaskar
President, YottaDB LLC
40 Lloyd Avenue, Suite 104
Malvern, PA 19355, USA
bha...@yottadb.com
https://yottadb.com

-- 
YottaDB - Rock solid. Lightning fast. Secure. Pick any three.

K.S. Bhaskar

unread,
Jan 21, 2020, 10:25:57 AM1/21/20
to Enterprise Web Developer Community
The Acculturation Guide has just been updated to include access to YottaDB from Perl and Rust. There is an exercise with concurrent database activity using processes in five languages (C, Go, M, Perl, Rust) while ensuring ACID transaction properties across all processes.

There is also a new post at https://yottadb.com/what-is-an-acculturation-guide/ explaining what an Acculturation Guide seeks to accomplish.

Regards
– Bhaskar

Zuwa

unread,
Jun 5, 2020, 5:24:10 PM6/5/20
to Enterprise Web Developer Community
Hello Bhaskar, Assistance needed please. I'm calling into a function on yottadb from a Go routine and getting the following error:

dude@dude-HP:~/.yottadb/r1.28_x86_64/r$ ./factorial
panic: CallMT() call failed: 150379666,(SimpleThreadAPI),%YDB-E-CINOENTRY, No entry specified for factorial in the call-in table

goroutine 1 [running]:
main.main()
        /home/dude/.yottadb/r1.28_x86_64/r/factorial.go:14 +0x1

The M function simply returns the factorial of the number requested from the Go routine. I've scoured the guide but can't quite figure out how to setup $ydb_ci. I've attached the Go routine JIC. I'm able to set and retrieve from globals without issue. Thanks

ZO.
factorial.go

K.S. Bhaskar

unread,
Jun 8, 2020, 11:36:34 AM6/8/20
to Enterprise Web Developer Community
Apologies for the delayed reply. We had no power at home from Wednesday mid-day through Sunday evening thanks to a derecho (https://en.wikipedia.org/wiki/June_2020_Pennsylvania%E2%80%93New_Jersey_derecho).

When you get an error like CINOENTRY, your first port of call should be the Messages and Recovery Procedures manual (in this case https://docs.yottadb.com/MessageRecovery/errors.html#cinoentry), which says:

CINOENTRY, No entry specified for xxxx in the call-in table


Run Time Error: This indicates that the call-name invoked by the C program does not have a corresponding entry in the call-in table specified by ydb_ci environment variable.


Action: Add an entry to the call-in table for the call-name. Refer to the External Calls chapter in the Programmer’s Guide.


So, in this case, your call-in table (https://docs.yottadb.com/MultiLangProgGuide/goprogram.html#go-callmt) does not have an entry for the M factorial function. The M Programmers Guide link above has examples of call-in tables.


Regards

– Bhaskar

Osazuwa Oyegun

unread,
Jun 9, 2020, 4:17:27 PM6/9/20
to enterprise-web-de...@googlegroups.com

Hi Bhaskar,

Thanks much for getting back. Still no luck. I've added my M routines to the $ydb_ci call-in file and getting the same error. I know the file is being checked at runtime because yotta barks when I screw something up in the file and execute the Go routine.

I'll give this a shot again later or maybe since there's no issue with setting or getting from globals, code something to call a routine that way.

If you have any working examples of calling into yotta routines/extrinsic functions from Go, I'd appreciate it if you could pass them along.

Thanks again.

ZO.

--
You received this message because you are subscribed to the Google Groups "Enterprise Web Developer Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to enterprise-web-develope...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/enterprise-web-developer-community/bcba18e7-9e84-40d5-8cf5-675811f5b18bo%40googlegroups.com.

K.S. Bhaskar

unread,
Jun 9, 2020, 6:16:40 PM6/9/20
to Enterprise Web Developer Community
ZO –

If you follow the instructions at https://docs.yottadb.com/MultiLangProgGuide/goprogram.html#go-quick-start and run the go test lang.yottadb.com/go/yottadb command you will find a go/src/lang.yottadb.com/go/yottadb/calltab.ci file in your home directory.

Regards
– Bhaskar

On Tuesday, June 9, 2020 at 4:17:27 PM UTC-4, Zuwa wrote:

Hi Bhaskar,

Thanks much for getting back. Still no luck. I've added my M routines to the $ydb_ci call-in file and getting the same error. I know the file is being checked at runtime because yotta barks when I screw something up in the file and execute the Go routine.

I'll give this a shot again later or maybe since there's no issue with setting or getting from globals, code something to call a routine that way.

If you have any working examples of calling into yotta routines/extrinsic functions from Go, I'd appreciate it if you could pass them along.

Thanks again.

ZO.


On 08/06/2020 4:36 pm, K.S. Bhaskar wrote:
Apologies for the delayed reply. We had no power at home from Wednesday mid-day through Sunday evening thanks to a derecho (https://en.wikipedia.org/wiki/June_2020_Pennsylvania%E2%80%93New_Jersey_derecho).

When you get an error like CINOENTRY, your first port of call should be the Messages and Recovery Procedures manual (in this case https://docs.yottadb.com/MessageRecovery/errors.html#cinoentry), which says:

CINOENTRY, No entry specified for xxxx in the call-in table


Run Time Error: This indicates that the call-name invoked by the C program does not have a corresponding entry in the call-in table specified by ydb_ci environment variable.


Action: Add an entry to the call-in table for the call-name. Refer to the External Calls chapter in the Programmer’s Guide.


So, in this case, your call-in table (https://docs.yottadb.com/MultiLangProgGuide/goprogram.html#go-callmt) does not have an entry for the M factorial function. The M Programmers Guide link above has examples of call-in tables.


Regards

– Bhaskar


On Friday, June 5, 2020 at 5:24:10 PM UTC-4, Zuwa wrote:
Hello Bhaskar, Assistance needed please. I'm calling into a function on yottadb from a Go routine and getting the following error:

du...@dude-HP:~/.yottadb/r1.28_x86_64/r$ ./factorial
panic: CallMT() call failed: 150379666,(SimpleThreadAPI),%YDB-E-CINOENTRY, No entry specified for factorial in the call-in table

goroutine 1 [running]:
main.main()
        /home/dude/.yottadb/r1.28_x86_64/r/factorial.go:14 +0x1

The M function simply returns the factorial of the number requested from the Go routine. I've scoured the guide but can't quite figure out how to setup $ydb_ci. I've attached the Go routine JIC. I'm able to set and retrieve from globals without issue. Thanks

ZO.


On Thursday, December 19, 2019 at 12:09:06 AM UTC+1, K.S. Bhaskar wrote:
We have just published a major revision to the YottaDB Acculturation Guide / Workshop (https://docs.yottadb.com/AcculturationGuide/acculturation.html).

  • Demonstrating that YottaDB is a language-agnostic NoSQL database, not just an implementation of M, the workshop includes functionally equivalent sample programs in C, Go, and M, and the workshop demonstrates a database that is concurrently updated by application processes in the three languages. Going forward, we hope to add functionally equivalent sample programs in more languages.
  • The workshop demonstrates use of the YottaDB's ydb_env_set script, which was significantly enhanced in r1.26 (the most current release of YottaDB is r1.28). As we are fastidious about upward compatibility in moving to newer YottaDB releases from older releases and from GT.M, existing application configurations will work unchanged. But new application environments are easier to deploy using ydb_env_set which works with C, Go, and M programs.
  • Benefiting from the fact that Debian 10 is a Supported platform for YottaDB, the Acculturation Workshop now uses a Debian 10 virtual machine, which has a lighter footprint than the previous Ubuntu 18.04 LTS virtual machine.

Please do try the new Acculturation Workshop, and please do check out accessing YottaDB databases from multiple languages. As this is a major revision, please report any glitches to me. Thank you for using YottaDB.

Regards
– Bhaskar

K.S. Bhaskar
President, YottaDB LLC
40 Lloyd Avenue, Suite 104
Malvern, PA 19355, USA
bha...@yottadb.com
https://yottadb.com

-- 
YottaDB - Rock solid. Lightning fast. Secure. Pick any three.
--
You received this message because you are subscribed to the Google Groups "Enterprise Web Developer Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to enterprise-web-developer-community+unsubscribe@googlegroups.com.

Osazuwa Oyegun

unread,
Jun 10, 2020, 7:53:43 PM6/10/20
to enterprise-web-de...@googlegroups.com

Bhaskar,

I am so so very grateful. All good now. Thank you very much.

ZO

p.s.

Directory go/src/lang.yottadb.com/go/yottadb is a treasure trove. Thanks.

To unsubscribe from this group and stop receiving emails from it, send an email to enterprise-web-develope...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/enterprise-web-developer-community/c2fd5b49-720c-42cf-8e78-5f2710e0880bo%40googlegroups.com.

K.S. Bhaskar

unread,
Jun 11, 2020, 10:20:02 AM6/11/20
to Enterprise Web Developer Community
Glad you have it working, Zuwa!

By the way, there are some changes coming in YottaDB r1.30 (https://gitlab.com/YottaDB/Lang/YDBGo/-/issues/25). Basically, Go likes to think it controls the world, treating YottaDB as an interloper when it asks for signals. Since YottaDB is (still!) smaller than the big G, r1.30 has significant internal changes to make Go happy. There is no impact on support for other languages, including M (which is just one of the languages with a native YottaDB API!).

Regards
- Bhaskar

Zuwa

unread,
Jun 15, 2020, 12:32:56 PM6/15/20
to Enterprise Web Developer Community
Hello Bhaskar,

Zuwa.

p.s.
I'm having an issue calling into yottadb routines from Rust (examples from https://yottadb.gitlab.io/Lang/YDBRust/yottadb/macro.ci_t.html).
My code           : use yottadb::{ci_t, TpToken};
Error message : "Cannot find macro `ci_t` in this scope rustc"
Any idea who I can contact on this? Thank you.

Rob Tweed

unread,
Jun 15, 2020, 12:47:14 PM6/15/20
to Enterprise Web Developer Community
Could these non-M/Gateway Developments technology discussions be moved elsewhere please?
Rob

To unsubscribe from this group and stop receiving emails from it, send an email to enterprise-web-develope...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Enterprise Web Developer Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to enterprise-web-develope...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Enterprise Web Developer Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to enterprise-web-develope...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/enterprise-web-developer-community/c555a822-a8e0-4950-b3c1-e9fd8caf6937o%40googlegroups.com.


--
Rob Tweed
Director, M/Gateway Developments Ltd
http://www.mgateway.com

Reply all
Reply to author
Forward
0 new messages