groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Henrik Martin <hen...@netgate.net>
Subject Limitation on size for argument list when using String.execute()?
Date Thu, 02 Apr 2015 20:39:31 GMT
Hi. I'm running into what seems to be some sort of limitation on the 
number of arguments passed to the execute() method. I have a Groovy 
class that calculates a set of database tables, and then executes the 
Postgres pg_dump command, where each table is specified with the -t 
option. I'm basically trying to dump the database, but only the 
specified tables. I'm using the List version of execute (found an 
example on the codehaus.org site). A little simplified, the code looks 
something like this:

// Returns a list like ["-t", "foo", "-t", "bar", "-t", ...]
def tableArgs = tablesToDump()
["$pgDump", '-a', '-n', 'public', '-f', "${tmpFile.path}", '-h', 
"$dbHost", '-p', "$dbPort", '-U', "$srcDbUser",  '-d', 
"$srcDb"].plus(tableArgs).execute()

In some cases, the list of -t table pairs can get quite long. So I'm 
running into situations where the output from the pg_dump command 
doesn't contain the data for some tables. The command succeeds with no 
errors, but I'm not getting the expected output from the database. 
However, if I instead of calling execute(), just print the command 
string and execute it manually from a shell, then things work. This 
makes me think that I'm running into some limitation of the execute() 
method. I have scoured the Groovy Lang/GDK documentation, but haven't 
found any mentioning of that. I'm guessing that Groovy uses the Java 
Runtime.exec() method under the covers, but I'm not aware of any 
documented limitations for Runtime.exec() either.

I like the convenience of using Groovy's execute() mechanism with the 
easy processing of stdin/stdout/stderr, so I'd like to stick to it 
unless some potential limitation forces me not to. In case it's of 
relevance, I'm running on MacOS 10.10.2, with Oracle Java version 
1.8.0_25-b17, and Groovy 2.3.10. Any help is much appreciated. Thanks,

-H

Mime
View raw message