Hello Tom,

That's probably a bigger change than we want to be putting in right now,
though I'm a bit tempted to go try it.

I definitely agree that the text variable solution is pretty ugly, but it
was the minimum change solution, and I do not have much time available.

Well, I felt like doing some minor hacking, so I went and adjusted the
code to work this way.  I'm pretty happy with the result, what do you
think?

This is a definite improvement.

I like the lazyness between string & numeric forms, and for sorting, that is what was needed doing to have something clean.

Applied on head, it works for me.

While testing the patch I found a minor preexisting (mine...) bug: when string-scanning doubles, whether the whole string is consumed or not is not checked. This means that -D x=0one is interpreted as double 0.

I came up with the attached check, but maybe there is a cleaner way to do that.

--
Fabien.
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index a484165..9673640 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -928,8 +928,10 @@ makeVariableNumeric(Variable *var)
 	else /* type should be double */
 	{
 		double dv;
+		int consumed;
 
-		if (sscanf(var->value, "%lf", &dv) != 1)
+		if (sscanf(var->value, "%lf%n", &dv, &consumed) != 1 ||
+			consumed != strlen(var->value))
 		{
 			fprintf(stderr,
 					"malformed variable \"%s\" value: \"%s\"\n",
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to