public static boolean columnEquals(Column base, Column other) {
        if (base == other) {
            return true;
        }

        if (!base.getName().equalsIgnoreCase(other.getName())) {
            return false;
        }

        if (!base.getType().equals(other.getType())) {
            return false;
        }

        return true;
    }
@Test
    public void testColumnEquals() {
        Column base = new Column("k1", Type.INT, false);
        Column other = new Column("k1", Type.INT, false);

        Assert.assertTrue(columnEquals(base, base));
        Assert.assertTrue(columnEquals(base, other));

        other = new Column("k2", Type.INT, false);
        Assert.assertFalse(columnEquals(base, other));

        other = new Column("k1", Type.STRING, false);
        Assert.assertFalse(columnEquals(base, other));

        base = new Column("k1", ScalarType.createCharType(5), false);
        other = new Column("k1", ScalarType.createCharType(10), false);
        Assert.assertFalse(columnEquals(base, other));

        base = new Column("k1", ScalarType.createDecimalV3Type(PrimitiveType.DECIMAL128, 5, 5), false);
        other = new Column("k1", ScalarType.createDecimalV3Type(PrimitiveType.DECIMAL128, 6, 5), false);
        Assert.assertFalse(columnEquals(base, other));

        base = new Column("k1", ScalarType.createDecimalV3Type(PrimitiveType.DECIMAL128, 5, 5), false);
        other = new Column("k1", ScalarType.createDecimalV3Type(PrimitiveType.DECIMAL128, 5, 4), false);
        Assert.assertFalse(columnEquals(base, other));
    }