The problem is:
DescribeCol column = 2, name = O, namelen = 13, type = unknown(-152),
size = 0, scale = 0, nullable = 0
display size = 0
column length = 0
now using col 2: type = unknown (-152), len = 1, display size = 1, pre
+c = 0, scale = 0
Column type -152 is unknown to your DBD::ODBC and in any case a call to SQLDescribeCol reports it as size=0 and SQLColAttributes reports display size=1 and column length = 0. For now you'll either have to upgrade to the latest DBD::ODBC which I believe supports MS_SQLS_XML_TYPE or you'll have to cast your m_oGroupDefinition to something else (a varchar).