Thread: pgbench: handring empty lines in external scripts

pgbench: handring empty lines in external scripts

From
ITAGAKI Takahiro
Date:
Hi Tatsuo-san and folks,

This is a fix in pgbench to handle empty lines in external scripts.
The manual says
| Empty lines and lines begging with "--" will be ignored.
but AFAICS, it cannot accept empty lines and exit with error.


The cause seems to be the usage of isspace(). The characters assumed
spaces are not only ' ' and '\t' but also '\n'. So the empty-lines-test
should be the below:


*** pgbench.orig.c    Tue Aug 15 17:04:58 2006
--- pgbench.c    Tue Aug 15 17:06:38 2006
*************** process_file(char *filename)
*** 1006,1012 ****
          while (isspace((unsigned char) buf[i]))
              i++;

!         if (strncmp(&buf[i], "\n", 1) != 0 && strncmp(&buf[i], "--", 2) != 0) {
              commands = process_commands(&buf[i]);
              if (commands == NULL)
              {
--- 1006,1012 ----
          while (isspace((unsigned char) buf[i]))
              i++;

!         if (buf[i] != '\0' && strncmp(&buf[i], "--", 2) != 0) {
              commands = process_commands(&buf[i]);
              if (commands == NULL)
              {

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center


Re: pgbench: handring empty lines in external scripts

From
Tatsuo Ishii
Date:
Thanks. I have committed your patches.
--
Tatsuo Ishii
SRA OSS, Inc. Japan

> Hi Tatsuo-san and folks,
>
> This is a fix in pgbench to handle empty lines in external scripts.
> The manual says
> | Empty lines and lines begging with "--" will be ignored.
> but AFAICS, it cannot accept empty lines and exit with error.
>
>
> The cause seems to be the usage of isspace(). The characters assumed
> spaces are not only ' ' and '\t' but also '\n'. So the empty-lines-test
> should be the below:
>
>
> *** pgbench.orig.c    Tue Aug 15 17:04:58 2006
> --- pgbench.c    Tue Aug 15 17:06:38 2006
> *************** process_file(char *filename)
> *** 1006,1012 ****
>           while (isspace((unsigned char) buf[i]))
>               i++;
>
> !         if (strncmp(&buf[i], "\n", 1) != 0 && strncmp(&buf[i], "--", 2) != 0) {
>               commands = process_commands(&buf[i]);
>               if (commands == NULL)
>               {
> --- 1006,1012 ----
>           while (isspace((unsigned char) buf[i]))
>               i++;
>
> !         if (buf[i] != '\0' && strncmp(&buf[i], "--", 2) != 0) {
>               commands = process_commands(&buf[i]);
>               if (commands == NULL)
>               {
>
> Regards,
> ---
> ITAGAKI Takahiro
> NTT Open Source Software Center
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>        subscribe-nomail command to majordomo@postgresql.org so that your
>        message can get through to the mailing list cleanly
>