Hi David Coe,

As David Li pointed out, ADBC implementations can either be based purely
within a language (C#-specific drivers that can only be used by C#
programs) or use C API drivers written in other languages (C, C++, Go). For
the latter, we won't be able to implement this until we finish implementing
the C Data Interface [1] and C Stream Interface [2]. And for both
approaches, I think we need to implement Union and Map types for GetInfo,
which currently aren't implemented in Arrow C#.

Best,
Will Jones

[1] https://github.com/apache/arrow/issues/33856
[2] https://github.com/apache/arrow/issues/33857


On Thu, Mar 9, 2023 at 1:38 PM David Coe <david....@microsoft.com.invalid>
wrote:

> Yes, ok, I see the pattern now. Thanks you.
>
> -----Original Message-----
> From: David Li <lidav...@apache.org>
> Sent: Thursday, March 9, 2023 4:30 PM
> To: dev@arrow.apache.org
> Subject: Re: [EXTERNAL] Re: Field class in Java vs C#
>
> [You don't often get email from lidav...@apache.org. Learn why this is
> important at https://aka.ms/LearnAboutSenderIdentification ]
>
> I believe it would be something like (pseudocode since the last time I
> touched C♯ was, 2009?)
>
> List<Field> TABLE_SCHEMA = new[]{
>   ...,
>   new Field("table_columns", new ListType(new StructType(COLUMN_SCHEMA)),
>   ...,
> };
>
> i.e. COLUMN_SCHEMA gets passed as the fields of a StructType itself
> instead of the field containing the StructType. (Which saves you some
> typing too since you don't have to explicitly name the list child field.)
>
> On Thu, Mar 9, 2023, at 16:20, David Coe wrote:
> > I am investigating whether ADBC can be a replacement for ODBC in
> > certain scenarios and help with more efficient copying.
> >
> > For example, in
> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith
> > ub.com%2Fapache%2Farrow-adbc%2Fblob%2F923e0408fe5a32cc6501b997fafa8316
> > ace25fe0%2Fjava%2Fcore%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Farrow%2Fad
> > bc%2Fcore%2FStandardSchemas.java%23L116&data=05%7C01%7CDavid.Coe%40mic
> > rosoft.com%7C79f83852d98644220a2808db20e58966%7C72f988bf86f141af91ab2d
> > 7cd011db47%7C1%7C0%7C638139942453273749%7CUnknown%7CTWFpbGZsb3d8eyJWIj
> > oiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C
> > %7C%7C&sdata=AHmBdvmzfH8vIabO8Z91HzqD%2BexwKNUn4McJQavldRM%3D&reserved
> > =0 it wants COLUMN_SCHEMA and CONSTRAINT_SCHEMA as children but
> > there's not an obvious way to add those children to the respected
> > fields.
> >
> > -----Original Message-----
> > From: David Li <lidav...@apache.org>
> > Sent: Thursday, March 9, 2023 3:37 PM
> > To: dev@arrow.apache.org
> > Subject: [EXTERNAL] Re: Field class in Java vs C#
> >
> > [You don't often get email from lidav...@apache.org. Learn why this is
> > important at https://aka.ms/LearnAboutSenderIdentification ]
> >
> > I'd be very interested if I can help in any way with porting ADBC to
> > more languages, and learning more about use cases/what functionality
> > is useful (e.g. are you looking to have a full driver/client ecosystem
> > in C♯, or are you interested in being able to leverage drivers written
> > in
> > C/C++/Go?)
> >
> > From a quick look, C♯ follows C++, Python, etc. in putting child
> > fields as part of the nested type, rather than as part of the field
> > itself. I can't say why precisely one implementation chose one design
> > or another, but Java basically follows the IPC format exactly in this
> > regard (and others, e.g. it has a parameterized Int type rather than
> > Int32, Int64, UInt32, etc.), while the other languages model it at a
> > higher level (because only some types can have children).
> >
> > What specifically is difficult with the how the APIs are structured?
> >
> > On Thu, Mar 9, 2023, at 15:19, David Coe wrote:
> >> I am interested in the difference between how a Field is structured
> >> in Java (with children) and in C# (no children) and why that's the case.
> >>
> >> I am looking to port apache/arrow-adbc: Apache arrow
> >> (github.com)<https://nam06.safelinks.protection.outlook.com/?url=http
> >> %3A%2F%2Fhttps%2F&data=05%7C01%7CDavid.Coe%40microsoft.com%7C79f83852
> >> d98644220a2808db20e58966%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7
> >> C638139942453273749%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQI
> >> joiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=EDG87
> >> XRgoxsU9x0bQ4zi0HcyxRytJMb8p3RsXR6xuO8%3D&reserved=0
> >> %3A%2F%2Fgithub.com%2Fapache%2Farrow-adbc&data=05%7C01%7CDavid.Coe%
> 40microsoft.com%7Cedcb6c5cec5f41e653ac08db20de28e7%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638139910769892299%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=6bc%2BVEFR2syJFe%2FwzSTHwSMeLka8U48r9mypFbspkIQ%3D&reserved=0>
> to C# but the concept of children is making it a little hairy.
> >>
> >>
> >>   *   David
>

Reply via email to