<pre class="notranslate">filepath.Walk's WalkFunc (<a href="http://golang.org/pkg/path/filepath/#WalkFunc)" rel="nofollow">http://golang.org/pkg/path/filepath/#WalkFunc)</a> is documented
as:

"If there was a problem walking to the file or directory named by path, the
incoming error will describe the problem and the function can decide how to handle that
error (and Walk will not descend into that directory). "

That is, it returns the stat error for that name.

But Walk is implemented using (*os.File).Readdir
(<a href="http://golang.org/pkg/os/#File.Readdir)" rel="nofollow">http://golang.org/pkg/os/#File.Readdir)</a>, which was changed in

<a href="https://code.google.com/p/go/source/detail?r=100a10512ea4#" rel="nofollow">https://code.google.com/p/go/source/detail?r=100a10512ea4#</a>

... to match its documentation.

That changed the behavior of filepath.Walk to now bail on any errors, rather than call
the WalkFunc callback with a (problemFilename, nil, errFromStat).

A fix was proposed at <a href="https://golang.org/cl/16100043/" rel="nofollow">https://golang.org/cl/16100043/</a></pre>
<pre class="notranslate">Now we have database/sql.Rows.Columns() but that only returns the column names.
But although the database driver could return some more information about those columns,
I can't see any way to get it.

sql.Rows has a rowsi member (driver.Rows), and if the driver would implement a
ColumnDescriber (<a href="http://play.golang.org/p/NliYBvmg4J)" rel="nofollow">http://play.golang.org/p/NliYBvmg4J)</a>, and driver.Rows would propagate
it, OR sql.Rows would export a 

DriverRows() driver.Rows

or such method, than we could use database/sql AND have the infos from the underlying
drivers.


A possible workaround is to Scan the first row into some []interface{} and inspect the
returned values. But implementing this for each and every query with previously unknown
columns seems error prone and dubious.

What is the expected output?
database/sql.Rows.Columns 
What is the expected output?


What do you see instead?


Which compiler are you using (5g, 6g, 8g, gccgo)?


Which operating system are you using?


Which version are you using?  (run 'go version')


Please provide any additional information below.</pre>