static int avro_datum_value_get_int(const avro_value_iface_t *iface, const void *vself, int32_t *out) { AVRO_UNUSED(iface); const avro_datum_t self = (const avro_datum_t) vself; check_param(EINVAL, self, "datum instance"); int rval; int32_t value; check(rval, avro_int32_get(self, &value)); *out = value; return 0; }
static int read_data_datum() { int rval; int records_read = 0; avro_file_reader_t reader; avro_datum_t datum; fprintf(stderr, "\nReading...\n"); rval = avro_file_reader(filename, &reader); if (rval) { fprintf(stderr, "Error using 'datum': %s\n", avro_strerror()); return -1; } avro_schema_t schema = avro_file_reader_get_writer_schema(reader); while ((rval = avro_file_reader_read(reader, schema, &datum)) == 0) { avro_datum_t val_datum; int32_t val; if (avro_record_get(datum, "ab", &val_datum)) { fprintf(stderr, "Error getting value: %s\n", avro_strerror()); return -1; } avro_int32_get(val_datum, &val); fprintf(stderr, "value = %d\n", val); records_read++; avro_datum_decref(datum); } avro_schema_decref(schema); avro_file_reader_close(reader); fprintf(stderr, "read %d records using 'datum'.\n", records_read); if (rval != EOF) { fprintf(stderr, "Error using 'datum': %s\n", avro_strerror()); return -1; } return records_read; }
/*输出数据库中的学生信息*/ int show_student(avro_file_reader_t db, avro_schema_t reader_schema) { int rval; avro_datum_t student; rval = avro_file_reader_read(db, reader_schema, &student); if (rval == 0) { int64_t i64; int32_t i32; char *p; avro_datum_t sid_datum, name_datum, dept_datum, phone_datum, age_datum; if (avro_record_get(student, "SID", &sid_datum) == 0) { avro_int64_get(sid_datum, &i64); fprintf(stdout, "%"PRId64" ", i64); } if (avro_record_get(student, "Name", &name_datum) == 0) { avro_string_get(name_datum, &p); fprintf(stdout, "%12s ", p); } if (avro_record_get(student, "Dept", &dept_datum) == 0) { avro_string_get(dept_datum, &p); fprintf(stdout, "%12s ", p); } if (avro_record_get(student, "Phone", &phone_datum) == 0) { avro_string_get(phone_datum, &p); fprintf(stdout, "%12s ", p); } if (avro_record_get(student, "Age", &age_datum) == 0) { avro_int32_get(age_datum, &i32); fprintf(stdout, "%d", i32); } fprintf(stdout, "\n"); /*释放记录*/ avro_datum_decref(student); } return rval; }