>From comments in Schema.java:
// In bags which have a schema with a tuple which contains
// the fields present in it, if we access the second field (say)
// we are actually trying to access the second field in the
// tuple in the bag. This is currently true for two cases:
// 1) bag constants - the schema of bag constant has a tuple
// which internally has the actual elements
// 2) When bags are loaded from input data, if the user
// specifies a schema with the "bag" type, he has to specify
// the bag as containing a tuple with the actual elements in
// the schema declaration. However in both the cases above,
// the user can still say b.i where b is the bag and i is
// an element in the bag's tuple schema. So in these cases,
// the access should translate to a lookup for "i" in the
// tuple schema present in the bag. To indicate this, the
// flag below is used. It is false by default because,
// currently we use bag as the type for relations. However
// the schema of a relation does NOT have a tuple fieldschema
// with items in it. Instead, the schema directly has the
// field schema of the items. So for a relation "b", the
// above b.i access would be a direct single level access
// of i in b's schema. This is treated as the "default" case
private boolean twoLevelAccessRequired = false;
-----Original Message-----
From: Dmitriy Ryaboy [mailto:[email protected]]
Sent: Monday, November 02, 2009 5:33 PM
To: [email protected]
Subject: two-level access problem?
Could someone explain the nature of the "two-level access problem"
referred to in the Load/Store redesign wiki and in the DataType code?
Thanks,
-D