MCPcopy Create free account
hub / github.com/apache/cloudberry / PLy_procedure_munge_source

Function PLy_procedure_munge_source

src/pl/plpython/plpy_procedure.c:430–473  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

428}
429
430static char *
431PLy_procedure_munge_source(const char *name, const char *src)
432{
433 char *mrc,
434 *mp;
435 const char *sp;
436 size_t mlen;
437 int plen;
438
439 /*
440 * room for function source and the def statement
441 */
442 mlen = (strlen(src) * 2) + strlen(name) + 16;
443
444 mrc = palloc(mlen);
445 plen = snprintf(mrc, mlen, "def %s():\n\t", name);
446 Assert(plen >= 0 && plen < mlen);
447
448 sp = src;
449 mp = mrc + plen;
450
451 while (*sp != '\0')
452 {
453 if (*sp == '\r' && *(sp + 1) == '\n')
454 sp++;
455
456 if (*sp == '\n' || *sp == '\r')
457 {
458 *mp++ = '\n';
459 *mp++ = '\t';
460 sp++;
461 }
462 else
463 *mp++ = *sp++;
464 }
465 *mp++ = '\n';
466 *mp++ = '\n';
467 *mp = '\0';
468
469 if (mp > (mrc + mlen))
470 elog(FATAL, "buffer overrun in PLy_procedure_munge_source");
471
472 return mrc;
473}

Callers 1

PLy_procedure_compileFunction · 0.85

Calls 1

pallocFunction · 0.50

Tested by

no test coverage detected