Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion csharp/arrow-adbc
3 changes: 3 additions & 0 deletions csharp/src/Hive2/HiveServer2Statement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,9 @@ public override void SetOption(string key, string value)
this.EscapePatternWildcards = escapePatternWildcards;
}
break;
case AdbcOptions.Telemetry.TraceParent:
SetTraceParent(string.IsNullOrWhiteSpace(value) ? null : value);
break;
default:
throw AdbcException.NotImplemented($"Option '{key}' is not implemented.");
}
Expand Down
43 changes: 43 additions & 0 deletions csharp/test/Common/StatementTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
using Apache.Arrow.Adbc;
using Apache.Arrow.Adbc.Tests;
using Apache.Arrow.Adbc.Tests.Xunit;
using Apache.Arrow.Adbc.Tracing;
using Apache.Arrow.Types;
using Xunit;
using Xunit.Abstractions;
Expand Down Expand Up @@ -340,6 +341,48 @@ public async Task CanGetColumns()
Assert.Equal(TestConfiguration.Metadata.ExpectedColumnCount, actualBatchLength);
}

[SkippableFact]
public void CanSetOptionTraceParent()
{
const string traceId0 = "11111111111111111111111111111111";
const string spanId0 = "2222222222222222";
const string statementTraceParent = $"00-{traceId0}-{spanId0}-01";
const string traceId1 = "33333333333333333333333333333333";
const string spanId1 = "4444444444444444";
const string connectionTraceParent = $"00-{traceId1}-{spanId1}-01";

var testConfiguration = TestConfiguration.Clone() as TConfig;
using AdbcConnection connection = NewConnection(testConfiguration);
using var statement = connection.CreateStatement();

IActivityTracer tracingConnection = (IActivityTracer)connection;
IActivityTracer tracingStatement = (IActivityTracer)statement;

// Initial state with TraceParent not set
Assert.Null(tracingConnection.TraceParent);
Assert.Null(tracingStatement.TraceParent);

// Set TraceParent on the statement only
statement.SetOption(AdbcOptions.Telemetry.TraceParent, statementTraceParent);
Assert.Equal(statementTraceParent, tracingStatement.TraceParent);
Assert.Null(tracingConnection.TraceParent);

// Set TraceParent on the connection, in addition to the statement
connection.SetOption(AdbcOptions.Telemetry.TraceParent, connectionTraceParent);
Assert.Equal(statementTraceParent, tracingStatement.TraceParent);
Assert.Equal(connectionTraceParent, tracingConnection.TraceParent);

// Clear TraceParent on the statement, connection value should remain
statement.SetOption(AdbcOptions.Telemetry.TraceParent, string.Empty);
Assert.Equal(connectionTraceParent, tracingStatement.TraceParent);
Assert.Equal(connectionTraceParent, tracingConnection.TraceParent);

// Clear TraceParent on the connection, statement value should remain cleared
connection.SetOption(AdbcOptions.Telemetry.TraceParent, string.Empty);
Assert.Null(tracingConnection.TraceParent);
Assert.Null(tracingStatement.TraceParent);
}

/// <summary>
/// Validates if the driver can execute GetPrimaryKeys metadata command.
/// </summary>
Expand Down
Loading