+ for(level = 0; level < DUMP_LEVELS; level++) {
+ if (est->est[level].needestimate) {
+ if (level > bsu->max_level) {
+ /* planner will not even consider this level */
+ g_printf("%s %d SIZE %lld\n", est->qamname, level,
+ (long long)-2);
+ est->est[level].needestimate = 0;
+ dbprintf(_("Application '%s' can't estimate level %d\n"),
+ est->dle->program, level);
+ } else if (estimate_method == ES_ES) {
+ g_printf("%s %d SIZE %lld\n", est->qamname, level,
+ (long long)-2);
+ est->est[level].needestimate = 0;
+ if (am_has_feature(g_options->features,
+ fe_rep_sendsize_quoted_error)) {
+ char *errmsg, *qerrmsg;
+ if (has_client && !bsu->client_estimate &&
+ has_calcsize && !bsu->calcsize) {
+ errmsg = vstrallocf(_("Application '%s' can't do CLIENT or CALCSIZE estimate"),
+ est->dle->program);
+ } else if (has_client && !bsu->client_estimate) {
+ errmsg = vstrallocf(_("Application '%s' can't do CLIENT estimate"),
+ est->dle->program);
+ } else if (has_calcsize && !bsu->calcsize) {
+ errmsg = vstrallocf(_("Application '%s' can't do CALCSIZE estimate"),
+ est->dle->program);
+ } else {
+ errmsg = vstrallocf(_("Application '%s' can't do estimate"),
+ est->dle->program);
+ }
+ qerrmsg = quote_string(errmsg);
+ dbprintf(_("errmsg is %s\n"), errmsg);
+ g_printf("%s %d ERROR %s\n",
+ est->qamname, 0, qerrmsg);
+ amfree(errmsg);
+ amfree(qerrmsg);
+ }
+ } else if (estimate_method == ES_SERVER &&
+ (est->est[level].server || client_method == ES_ES)) {
+ /* planner will consider this level, */
+ /* but use a server-side estimate */
+ g_printf("%s %d SIZE -1\n", est->qamname, level);
+ est->est[level].needestimate = 0;
+ } else if (client_method == ES_CLIENT) {
+ levels[nb_level++] = level;
+ } else if (client_method == ES_CALCSIZE) {
+ levels[nb_level++] = level;
+ }
+ }
+ }