in gpcontrib/gpmapreduce/src/parse.c [1581:1842]
void mapred_dump_yaml(mapred_object_t *obj)
{
char *ckind = NULL;
if (!obj)
return;
switch (obj->kind)
{
case MAPRED_DOCUMENT:
printf("---\n");
/* Dumping the current version */
printf("VERSION: 1.0.0.3\n");
if (obj->u.document.database)
printf("DATABASE: %s\n", obj->u.document.database);
if (obj->u.document.user)
printf("USER: %s\n", obj->u.document.user);
if (obj->u.document.host)
printf("HOST: %s\n", obj->u.document.host);
if (obj->u.document.port > 0)
printf("PORT: %d\n", obj->u.document.port);
if (obj->u.document.flags & mapred_document_defines)
{
mapred_olist_t *sub;
printf("DEFINE:\n");
for (sub = obj->u.document.objects; sub; sub = sub->next)
if (sub->object->kind != MAPRED_EXECUTION)
mapred_dump_yaml(sub->object);
}
if (obj->u.document.flags & mapred_document_executes)
{
mapred_olist_t *sub;
printf("EXECUTE:\n");
for (sub = obj->u.document.objects; sub; sub = sub->next)
if (sub->object->kind == MAPRED_EXECUTION)
mapred_dump_yaml(sub->object);
}
break;
case MAPRED_INPUT:
printf(" - INPUT:\n");
if (obj->name)
printf(" NAME: %s\n", obj->name);
if (obj->u.input.columns)
{
mapred_plist_t *plist;
printf(" COLUMNS:\n");
for (plist = obj->u.input.columns; plist; plist = plist->next)
printf(" - %s %s\n", plist->name, plist->type);
}
if (obj->u.input.delimiter)
printf(" DELIMITER: %s\n", obj->u.input.delimiter);
if (obj->u.input.encoding)
printf(" ENCODING: %s\n", obj->u.input.encoding);
switch (obj->u.input.format)
{
case MAPRED_FORMAT_NONE:
break;
case MAPRED_FORMAT_TEXT:
printf(" FORMAT: TEXT\n");
break;
case MAPRED_FORMAT_CSV:
printf(" FORMAT: CSV\n");
break;
default:
XASSERT(false);
}
switch (obj->u.input.type)
{
case MAPRED_INPUT_NONE:
break;
case MAPRED_INPUT_FILE:
{
mapred_clist_t *clist;
printf(" FILE:\n");
for (clist = obj->u.input.files; clist; clist = clist->next)
printf(" - %s\n", clist->value);
break;
}
case MAPRED_INPUT_GPFDIST:
printf(" GPFDIST: %s\n", obj->u.input.desc);
break;
case MAPRED_INPUT_TABLE:
printf(" TABLE: %s\n", obj->u.input.desc);
break;
case MAPRED_INPUT_QUERY:
printf(" QUERY: |\n");
printf(" %s\n", obj->u.input.desc);
break;
case MAPRED_INPUT_EXEC:
printf(" EXEC: %s\n", obj->u.input.desc);
break;
default:
XASSERT(false);
}
break;
case MAPRED_OUTPUT:
printf(" - OUTPUT:\n");
if (obj->name)
printf(" NAME: %s\n", obj->name);
switch (obj->u.output.mode)
{
case MAPRED_OUTPUT_MODE_NONE:
break;
case MAPRED_OUTPUT_MODE_REPLACE:
printf(" MODE: REPLACE\n");
break;
case MAPRED_OUTPUT_MODE_APPEND:
printf(" MODE: APPEND\n");
break;
default:
XASSERT(false);
}
switch (obj->u.output.type)
{
case MAPRED_OUTPUT_NONE:
break;
case MAPRED_OUTPUT_FILE:
printf(" FILE: %s\n", obj->u.output.desc);
break;
case MAPRED_OUTPUT_TABLE:
printf(" TABLE: %s\n", obj->u.output.desc);
break;
default:
XASSERT(false);
}
break;
case MAPRED_MAPPER:
ckind = "MAP";
/* fallthrough */
case MAPRED_TRANSITION:
if (!ckind)
ckind = "TRANSITION";
/* fallthrough */
case MAPRED_COMBINER:
if (!ckind)
ckind = "CONSOLIDATE";
/* fallthrough */
case MAPRED_FINALIZER:
if (!ckind)
ckind = "FINALIZE";
printf(" - %s:\n", ckind);
if (obj->name)
printf(" NAME: %s\n", obj->name);
if (obj->u.function.parameters)
{
mapred_plist_t *plist;
printf(" PARAMETERS:\n");
for (plist = obj->u.function.parameters; plist;
plist = plist->next)
printf(" - %s %s\n", plist->name, plist->type);
}
if (obj->u.function.returns)
{
mapred_plist_t *plist;
printf(" RETURNS:\n");
for (plist = obj->u.function.returns; plist;
plist = plist->next)
printf(" - %s %s\n", plist->name, plist->type);
}
switch (obj->u.function.mode)
{
case MAPRED_MODE_NONE:
break;
case MAPRED_MODE_SINGLE:
printf(" MODE: SINGLE\n");
break;
case MAPRED_MODE_MULTI:
printf(" MODE: MULTI\n");
break;
case MAPRED_MODE_ACCUMULATED:
printf(" MODE: ACCUMULATED\n");
break;
case MAPRED_MODE_WINDOWED:
printf(" MODE: WINDOWED\n");
break;
default:
printf(" MODE: UNKNOWN\n");
break;
}
if (obj->u.function.flags)
{
printf(" OPTIMIZE: ");
if (obj->u.function.flags & mapred_function_strict)
printf("STRICT ");
if (obj->u.function.flags & mapred_function_immutable)
printf("IMMUTABLE ");
if (obj->u.function.flags & mapred_function_unordered)
printf("UNORDERED ");
printf("\n");
}
if (obj->u.function.language)
printf(" LANGUAGE: %s\n", obj->u.function.language);
if (obj->u.function.body)
{
printf(" FUNCTION: |\n");
printf(" %s\n", obj->u.function.body);
}
break;
case MAPRED_REDUCER:
printf(" - REDUCE:\n");
if (obj->name)
printf(" NAME: %s\n", obj->name);
if (obj->u.reducer.transition.name)
printf(" TRANSITION: %s\n",
obj->u.reducer.transition.name);
if (obj->u.reducer.combiner.name)
printf(" CONSOLIDATE: %s\n",
obj->u.reducer.combiner.name);
if (obj->u.reducer.finalizer.name)
printf(" FINALIZE: %s\n",
obj->u.reducer.finalizer.name);
if (obj->u.reducer.initialize)
printf(" INITIALIZE: %s\n",
obj->u.reducer.initialize);
if (obj->u.reducer.keys)
{
mapred_clist_t *clist;
printf(" KEYS: |\n");
for (clist = obj->u.reducer.keys; clist; clist = clist->next)
printf(" - %s\n", clist->value);
}
if (obj->u.reducer.ordering)
{
mapred_clist_t *clist;
printf(" ORDERING: |\n");
for (clist = obj->u.reducer.ordering; clist; clist = clist->next)
printf(" - %s\n", clist->value);
}
break;
case MAPRED_TASK:
case MAPRED_EXECUTION:
if (obj->u.task.execute)
printf(" - RUN:\n");
else
printf(" - TASK:\n");
if (obj->name)
printf(" NAME: %s\n", obj->name);
if (obj->u.task.input.name)
printf(" SOURCE: %s\n", obj->u.task.input.name);
if (obj->u.task.mapper.name)
printf(" MAP: %s\n", obj->u.task.mapper.name);
if (obj->u.task.reducer.name)
printf(" REDUCE: %s\n", obj->u.task.reducer.name);
if (obj->u.task.output.name)
printf(" TARGET: %s\n", obj->u.task.output.name);
break;
case MAPRED_NO_KIND:
default:
XRAISE(MAPRED_PARSE_INTERNAL,
"Unknown object type");
}
}