Program: 25046
Project: 25046
Buggy source:
@Test public void testForColumns(){
  final String QUERY_TXT="String_Node_Str";
  try {
    ADQLParser parser=new ADQLParser();
    DefaultDBTable table1=new DefaultDBTable("String_Node_Str");
    table1.addColumn(new DefaultDBColumn("String_Node_Str",table1));
    table1.addColumn(new DefaultDBColumn("String_Node_Str",new DBType(DBDatatype.UNKNOWN),table1));
    Collection<DBTable> tList=Arrays.asList(new DBTable[]{table1});
    DBColumn col=table1.getColumn("String_Node_Str",true);
    assertNotNull(col);
    assertNull(col.getDatatype());
    col=table1.getColumn("String_Node_Str",true);
    assertNotNull(col);
    assertNotNull(col.getDatatype());
    assertTrue(col.getDatatype().isUnknown());
    assertTrue(col.getDatatype().isNumeric());
    assertTrue(col.getDatatype().isString());
    assertTrue(col.getDatatype().isGeometry());
    assertEquals("String_Node_Str",col.getDatatype().toString());
    FunctionDef udf1=FunctionDef.parse("String_Node_Str");
    Collection<FunctionDef> udfList=Arrays.asList(new FunctionDef[]{udf1});
    Collection<String> geoList=null;
    Collection<String> csList=null;
    QueryChecker checker=new DBChecker(tList,udfList,geoList,csList);
    ADQLQuery pq=parser.parseQuery(QUERY_TXT);
    checker.check(pq);
  }
 catch (  Exception ex) {
    ex.printStackTrace(System.err);
    fail("String_Node_Str");
  }
}

Fixed version (ground truth):
@Test public void testForColumns(){
  final String QUERY_TXT="String_Node_Str";
  try {
    ADQLParser parser=new ADQLParser();
    DefaultDBTable table1=new DefaultDBTable("String_Node_Str");
    table1.addColumn(new DefaultDBColumn("String_Node_Str",table1));
    table1.addColumn(new DefaultDBColumn("String_Node_Str",new DBType(DBDatatype.UNKNOWN),table1));
    table1.addColumn(new DefaultDBColumn("String_Node_Str",new DBType(DBDatatype.VARCHAR),table1));
    Collection<DBTable> tList=Arrays.asList(new DBTable[]{table1});
    DBColumn col=table1.getColumn("String_Node_Str",true);
    assertNotNull(col);
    assertNull(col.getDatatype());
    col=table1.getColumn("String_Node_Str",true);
    assertNotNull(col);
    assertNotNull(col.getDatatype());
    assertTrue(col.getDatatype().isUnknown());
    assertFalse(col.getDatatype().isNumeric());
    assertFalse(col.getDatatype().isString());
    assertFalse(col.getDatatype().isGeometry());
    assertEquals("String_Node_Str",col.getDatatype().toString());
    FunctionDef udf1=FunctionDef.parse("String_Node_Str");
    Collection<FunctionDef> udfList=Arrays.asList(new FunctionDef[]{udf1});
    Collection<String> geoList=null;
    Collection<String> csList=null;
    QueryChecker checker=new DBChecker(tList,udfList,geoList,csList);
    ADQLQuery pq=parser.parseQuery(QUERY_TXT);
    checker.check(pq);
    assertTrue(pq.getSelect().get(0).getOperand().isNumeric());
    assertFalse(pq.getSelect().get(0).getOperand().isString());
    assertFalse(pq.getSelect().get(0).getOperand().isGeometry());
    assertTrue(pq.getSelect().get(1).getOperand().isNumeric());
    assertFalse(pq.getSelect().get(1).getOperand().isString());
    assertFalse(pq.getSelect().get(1).getOperand().isGeometry());
    assertTrue(pq.getSelect().get(2).getOperand().isNumeric());
    assertTrue(pq.getSelect().get(2).getOperand().isString());
    assertTrue(pq.getSelect().get(2).getOperand().isGeometry());
    assertTrue(pq.getSelect().get(3).getOperand().isNumeric());
    assertTrue(pq.getSelect().get(3).getOperand().isString());
    assertTrue(pq.getSelect().get(3).getOperand().isGeometry());
    assertFalse(pq.getSelect().get(4).getOperand().isNumeric());
    assertTrue(pq.getSelect().get(4).getOperand().isString());
    assertFalse(pq.getSelect().get(4).getOperand().isGeometry());
  }
 catch (  Exception ex) {
    ex.printStackTrace(System.err);
    fail("String_Node_Str");
  }
}