MCPcopy Create free account
hub / github.com/bloomberg/comdb2 / load_user_src

Function load_user_src

lua/sp.c:1728–1764  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1726#define IS_SYS(spname) (!strncasecmp(spname, "sys.", 4))
1727
1728static char *load_user_src(char *spname, struct spversion_t *spversion,
1729 int bootstrap, char **err)
1730{
1731 char *src = NULL;
1732 int size, bdb_err, rc;
1733 if (spversion->version_num == 0 && spversion->version_str == NULL) {
1734 if ((src = load_default_src(spname, spversion, &size)) == NULL) {
1735 *err = no_such_procedure(spname, spversion);
1736 return NULL;
1737 }
1738 } else if (spversion->version_num > 0) {
1739 if ((rc = bdb_get_sp_lua_source(thedb->bdb_env, NULL, spname, &src,
1740 spversion->version_num, &size,
1741 &bdb_err)) != 0) {
1742 *err = no_such_procedure(spname, spversion);
1743 return NULL;
1744 }
1745 } else {
1746 if (bdb_get_versioned_sp(spname, spversion->version_str, &src) != 0) {
1747 *err = no_such_procedure(spname, spversion);
1748 return NULL;
1749 }
1750 size = strlen(src) + 1;
1751 }
1752 if (bootstrap == 2) {
1753 char *sp_src = malloc(size + 1 + sizeof(trigger_main) + sizeof(bootstrap_src));
1754 sprintf(sp_src, "%s\n%s%s", src, trigger_main, bootstrap_src);
1755 free(src);
1756 src = sp_src;
1757 } else if (bootstrap) {
1758 char *sp_src = malloc(size + sizeof(bootstrap_src));
1759 sprintf(sp_src, "%s%s", src, bootstrap_src);
1760 free(src);
1761 src = sp_src;
1762 }
1763 return src;
1764}
1765
1766static char *load_src(char *spname, struct spversion_t *spversion,
1767 int bootstrap, char **err)

Callers 1

load_srcFunction · 0.85

Calls 6

load_default_srcFunction · 0.85
no_such_procedureFunction · 0.85
bdb_get_sp_lua_sourceFunction · 0.85
bdb_get_versioned_spFunction · 0.85
mallocFunction · 0.85
freeFunction · 0.85

Tested by

no test coverage detected