On Tuesday, November 8, 2011 3:05:03 PM, "Jim Klucar" <[email protected]> wrote: > Currently the > org.apache.accumulo.core.util.shell.commands.SetIterCommand > requires that the iterator implement the OptionDescriber interface > (line > 128). This prevents using some useful iterators at the shell, for > instance > the DebugIterator. A nice way to learn how iterators work is to set > this > iterator, use "debug on" at the shell and start scanning different > ways.
Iterators can also be configured manually in the shell using the config command. For example, you could set the debug iterator as follows: config -t tablename -s table.iterator.scan.debug=100,org.apache.accumulo.core.iterators.DebugIterator You can also set options/parameters for iterators that require them with further config commands. The issue with allowing setiter to configure iterators that do not implement OptionDescriber is that there is no way for the shell (or the user) to know if the iterators require options or not. It would have to configure them without options, then the user would have to look at the code or documentation to determine the required options and set those manually with config. We could consider requiring that iterators implement default parameters that would be used whenever parameters are not specified. Then any iterator could be configured with setiter. However, it can be confusing for users if the default parameters are not obvious -- I had one user expect that removing the maxVersions parameter for the VersioningIterator would stop it from restricting the number of versions, when in fact the default for maxVersions is 1. Billie
