internal override void MetaDataAvailable(SmiQueryMetaData[] metaData, bool nextEventIsRow) { if (this._parent == null) { throw SQL.UnexpectedSmiEvent(UnexpectedEventType.MetaDataAvailable); } this._parent.MetaDataAvailable(metaData, nextEventIsRow); }
// Called for new resultset starting (COLMETADATA token) internal abstract void MetaDataAvailable( SmiQueryMetaData[] metaData, bool nextEventIsRow );
internal virtual SmiExtendedMetaData[] GetInternalSmiMetaData() { SmiExtendedMetaData[] dataArray = null; _SqlMetaDataSet metaData = this.MetaData; if ((metaData != null) && (0 < metaData.Length)) { dataArray = new SmiExtendedMetaData[metaData.visibleColumns]; for (int i = 0; i < metaData.Length; i++) { _SqlMetaData data = metaData[i]; if (!data.isHidden) { SqlCollation collation = data.collation; string xmlSchemaCollectionDatabase = null; string xmlSchemaCollectionOwningSchema = null; string xmlSchemaCollectionName = null; if (SqlDbType.Xml == data.type) { xmlSchemaCollectionDatabase = data.xmlSchemaCollectionDatabase; xmlSchemaCollectionOwningSchema = data.xmlSchemaCollectionOwningSchema; xmlSchemaCollectionName = data.xmlSchemaCollectionName; } else if (SqlDbType.Udt == data.type) { SqlConnection.CheckGetExtendedUDTInfo(data, true); xmlSchemaCollectionDatabase = data.udtDatabaseName; xmlSchemaCollectionOwningSchema = data.udtSchemaName; xmlSchemaCollectionName = data.udtTypeName; } int length = data.length; if (length > 0x1f40) { length = -1; } else if ((SqlDbType.NChar == data.type) || (SqlDbType.NVarChar == data.type)) { length /= ADP.CharSize; } dataArray[i] = new SmiQueryMetaData(data.type, (long) length, data.precision, data.scale, (collation != null) ? ((long) collation.LCID) : ((long) this._defaultLCID), (collation != null) ? collation.SqlCompareOptions : SqlCompareOptions.None, data.udtType, false, null, null, data.column, xmlSchemaCollectionDatabase, xmlSchemaCollectionOwningSchema, xmlSchemaCollectionName, data.isNullable, data.serverName, data.catalogName, data.schemaName, data.tableName, data.baseColumn, data.isKey, data.isIdentity, 0 == data.updatability, data.isExpression, data.isDifferentName, data.isHidden); } } } return dataArray; }
internal override void MetaDataAvailable(SmiQueryMetaData[] md, bool nextEventIsRow) { if (Bid.AdvancedOn) { Bid.Trace("<sc.SqlDataReaderSmi.ReaderEventSink.MetaDataAvailable|ADV> %d#, md.Length=%d nextEventIsRow=%d.\n", this.reader.ObjectID, (md != null) ? md.Length : -1, nextEventIsRow); if (md != null) { for (int i = 0; i < md.Length; i++) { Bid.Trace("<sc.SqlDataReaderSmi.ReaderEventSink.MetaDataAvailable|ADV> %d#, metaData[%d] is %ls%ls\n", this.reader.ObjectID, i, md[i].GetType().ToString(), md[i].TraceString()); } } } this.reader.MetaDataAvailable(md, nextEventIsRow); }
private void MetaDataAvailable(SmiQueryMetaData[] md, bool nextEventIsRow) { this._currentMetaData = md; this._hasRows = nextEventIsRow; this._fieldNameLookup = null; this._currentPosition = PositionState.BeforeRows; this._indexMap = new int[this._currentMetaData.Length]; int index = 0; for (int i = 0; i < this._currentMetaData.Length; i++) { if (!this._currentMetaData[i].IsHidden.IsTrue) { this._indexMap[index] = i; index++; } } this._visibleColumnCount = index; }