Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into swiss-join-avx2
Browse files Browse the repository at this point in the history
  • Loading branch information
zanmato1984 committed Aug 27, 2024
2 parents 7bcafad + 11f9249 commit 6285806
Show file tree
Hide file tree
Showing 140 changed files with 4,066 additions and 1,185 deletions.
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ VCPKG="943c5ef1c8f6b5e6ced092b242c8299caae2ff01" # 2024.04.26 Release
# ci/docker/python-wheel-windows-vs2019.dockerfile.
# This is a workaround for our CI problem that "archery docker build" doesn't
# use pulled built images in dev/tasks/python-wheels/github.windows.yml.
PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2024-06-18
PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2024-08-06

# Use conanio/${CONAN_BASE}:{CONAN_VERSION} for "docker-compose run --rm conan".
# See https://github.com/conan-io/conan-docker-tools#readme and
Expand Down
11 changes: 5 additions & 6 deletions .github/workflows/r.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,19 +86,18 @@ jobs:
run: |
sudo apt-get install devscripts
# replace the SHA with v2 once INFRA-26031 is resolved
- uses: r-lib/actions/setup-r@732fb28088814627972f1ccbacc02561178cf391
- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
install-r: false

- uses: r-lib/actions/setup-r-dependencies@732fb28088814627972f1ccbacc02561178cf391
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::rcmdcheck
needs: check
working-directory: src/r

- uses: r-lib/actions/check-r-package@732fb28088814627972f1ccbacc02561178cf391
- uses: r-lib/actions/check-r-package@v2
with:
working-directory: src/r
env:
Expand Down Expand Up @@ -341,11 +340,11 @@ jobs:
cd r/windows
ls *.zip | xargs -n 1 unzip -uo
rm -rf *.zip
- uses: r-lib/actions/setup-r@732fb28088814627972f1ccbacc02561178cf391
- uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.rversion }}
Ncpus: 2
- uses: r-lib/actions/setup-r-dependencies@732fb28088814627972f1ccbacc02561178cf391
- uses: r-lib/actions/setup-r-dependencies@v2
env:
GITHUB_PAT: "${{ github.token }}"
with:
Expand Down
198 changes: 188 additions & 10 deletions c_glib/arrow-flight-glib/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ G_BEGIN_DECLS
*
* #GAFlightStreamChunk is a class for a chunk in stream.
*
* #GAFlightRecordBatchReader is a class for reading record batches.
* #GAFlightRecordBatchReader is an abstract class for reading record
* batches with metadata.
*
* #GAFlightRecordBatchWeriter is an abstract class for
* writing record batches with metadata.
*
* Since: 5.0.0
*/
Expand Down Expand Up @@ -1172,13 +1176,13 @@ typedef struct GAFlightRecordBatchReaderPrivate_
} GAFlightRecordBatchReaderPrivate;

enum {
PROP_READER = 1,
PROP_IS_OWNER,
PROP_RECORD_BATCH_READER_READER = 1,
PROP_RECORD_BATCH_READER_IS_OWNER,
};

G_DEFINE_TYPE_WITH_PRIVATE(GAFlightRecordBatchReader,
gaflight_record_batch_reader,
G_TYPE_OBJECT)
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GAFlightRecordBatchReader,
gaflight_record_batch_reader,
G_TYPE_OBJECT)

#define GAFLIGHT_RECORD_BATCH_READER_GET_PRIVATE(obj) \
static_cast<GAFlightRecordBatchReaderPrivate *>( \
Expand All @@ -1204,11 +1208,11 @@ gaflight_record_batch_reader_set_property(GObject *object,
auto priv = GAFLIGHT_RECORD_BATCH_READER_GET_PRIVATE(object);

switch (prop_id) {
case PROP_READER:
case PROP_RECORD_BATCH_READER_READER:
priv->reader =
static_cast<arrow::flight::MetadataRecordBatchReader *>(g_value_get_pointer(value));
break;
case PROP_IS_OWNER:
case PROP_RECORD_BATCH_READER_IS_OWNER:
priv->is_owner = g_value_get_boolean(value);
break;
default:
Expand Down Expand Up @@ -1236,15 +1240,15 @@ gaflight_record_batch_reader_class_init(GAFlightRecordBatchReaderClass *klass)
nullptr,
nullptr,
static_cast<GParamFlags>(G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property(gobject_class, PROP_READER, spec);
g_object_class_install_property(gobject_class, PROP_RECORD_BATCH_READER_READER, spec);

spec = g_param_spec_boolean(
"is-owner",
nullptr,
nullptr,
TRUE,
static_cast<GParamFlags>(G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property(gobject_class, PROP_IS_OWNER, spec);
g_object_class_install_property(gobject_class, PROP_RECORD_BATCH_READER_IS_OWNER, spec);
}

/**
Expand Down Expand Up @@ -1296,6 +1300,173 @@ gaflight_record_batch_reader_read_all(GAFlightRecordBatchReader *reader, GError
}
}

typedef struct GAFlightRecordBatchWriterPrivate_
{
arrow::flight::MetadataRecordBatchWriter *writer;
bool is_owner;
} GAFlightRecordBatchWriterPrivate;

enum {
PROP_RECORD_BATCH_WRITER_WRITER = 1,
PROP_RECORD_BATCH_WRITER_IS_OWNER,
};

G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GAFlightRecordBatchWriter,
gaflight_record_batch_writer,
GARROW_TYPE_RECORD_BATCH_WRITER)

#define GAFLIGHT_RECORD_BATCH_WRITER_GET_PRIVATE(object) \
static_cast<GAFlightRecordBatchWriterPrivate *>( \
gaflight_record_batch_writer_get_instance_private( \
GAFLIGHT_RECORD_BATCH_WRITER(object)))

static void
gaflight_record_batch_writer_finalize(GObject *object)
{
auto priv = GAFLIGHT_RECORD_BATCH_WRITER_GET_PRIVATE(object);
if (priv->is_owner) {
delete priv->writer;
}
G_OBJECT_CLASS(gaflight_info_parent_class)->finalize(object);
}

static void
gaflight_record_batch_writer_set_property(GObject *object,
guint prop_id,
const GValue *value,
GParamSpec *pspec)
{
auto priv = GAFLIGHT_RECORD_BATCH_WRITER_GET_PRIVATE(object);

switch (prop_id) {
case PROP_RECORD_BATCH_WRITER_WRITER:
priv->writer =
static_cast<arrow::flight::MetadataRecordBatchWriter *>(g_value_get_pointer(value));
break;
case PROP_RECORD_BATCH_WRITER_IS_OWNER:
priv->is_owner = g_value_get_boolean(value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
}
}

static void
gaflight_record_batch_writer_init(GAFlightRecordBatchWriter *object)
{
}

static void
gaflight_record_batch_writer_class_init(GAFlightRecordBatchWriterClass *klass)
{
auto gobject_class = G_OBJECT_CLASS(klass);

gobject_class->finalize = gaflight_record_batch_writer_finalize;
gobject_class->set_property = gaflight_record_batch_writer_set_property;

GParamSpec *spec;
spec = g_param_spec_pointer(
"writer",
nullptr,
nullptr,
static_cast<GParamFlags>(G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property(gobject_class, PROP_RECORD_BATCH_WRITER_WRITER, spec);

spec = g_param_spec_boolean(
"is-owner",
nullptr,
nullptr,
TRUE,
static_cast<GParamFlags>(G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property(gobject_class, PROP_RECORD_BATCH_WRITER_IS_OWNER, spec);
}

/**
* gaflight_record_batch_writer_begin:
* @writer: A #GAFlightRecordBatchWriter.
* @schema: A #GArrowSchema.
* @options: (nullable): A #GArrowWriteOptions.
* @error: (nullable): Return location for a #GError or %NULL.
*
* Begins writing data with the given schema. Only used with
* `DoExchange`.
*
* Returns: %TRUE on success, %FALSE on error.
*
* Since: 18.0.0
*/
gboolean
gaflight_record_batch_writer_begin(GAFlightRecordBatchWriter *writer,
GArrowSchema *schema,
GArrowWriteOptions *options,
GError **error)
{
auto flight_writer = gaflight_record_batch_writer_get_raw(writer);
auto arrow_schema = garrow_schema_get_raw(schema);
arrow::ipc::IpcWriteOptions arrow_write_options;
if (options) {
arrow_write_options = *garrow_write_options_get_raw(options);
} else {
arrow_write_options = arrow::ipc::IpcWriteOptions::Defaults();
}
return garrow::check(error,
flight_writer->Begin(arrow_schema, arrow_write_options),
"[flight-record-batch-writer][begin]");
}

/**
* gaflight_record_batch_writer_write_metadata:
* @writer: A #GAFlightRecordBatchWriter.
* @metadata: A #GArrowBuffer.
* @error: (nullable): Return location for a #GError or %NULL.
*
* Write metadata.
*
* Returns: %TRUE on success, %FALSE on error.
*
* Since: 18.0.0
*/
gboolean
gaflight_record_batch_writer_write_metadata(GAFlightRecordBatchWriter *writer,
GArrowBuffer *metadata,
GError **error)
{
auto flight_writer = gaflight_record_batch_writer_get_raw(writer);
auto arrow_metadata = garrow_buffer_get_raw(metadata);
return garrow::check(error,
flight_writer->WriteMetadata(arrow_metadata),
"[flight-record-batch-writer][write-metadata]");
}

/**
* gaflight_record_batch_writer_write:
* @writer: A #GAFlightRecordBatchWriter.
* @record_batch: A #GArrowRecordBatch.
* @metadata: (nullable): A #GArrowBuffer.
* @error: (nullable): Return location for a #GError or %NULL.
*
* Write a record batch with metadata.
*
* Returns: %TRUE on success, %FALSE on error.
*
* Since: 18.0.0
*/
gboolean
gaflight_record_batch_writer_write(GAFlightRecordBatchWriter *writer,
GArrowRecordBatch *record_batch,
GArrowBuffer *metadata,
GError **error)
{
auto flight_writer = gaflight_record_batch_writer_get_raw(writer);
auto arrow_record_batch = garrow_record_batch_get_raw(record_batch);
auto arrow_metadata = garrow_buffer_get_raw(metadata);
return garrow::check(
error,
flight_writer->WriteWithMetadata(*arrow_record_batch, arrow_metadata),
"[flight-record-batch-writer][write]");
}

G_END_DECLS

GAFlightCriteria *
Expand Down Expand Up @@ -1428,3 +1599,10 @@ gaflight_record_batch_reader_get_raw(GAFlightRecordBatchReader *reader)
auto priv = GAFLIGHT_RECORD_BATCH_READER_GET_PRIVATE(reader);
return priv->reader;
}

arrow::flight::MetadataRecordBatchWriter *
gaflight_record_batch_writer_get_raw(GAFlightRecordBatchWriter *writer)
{
auto priv = GAFLIGHT_RECORD_BATCH_WRITER_GET_PRIVATE(writer);
return priv->writer;
}
32 changes: 32 additions & 0 deletions c_glib/arrow-flight-glib/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -232,4 +232,36 @@ GAFLIGHT_AVAILABLE_IN_6_0
GArrowTable *
gaflight_record_batch_reader_read_all(GAFlightRecordBatchReader *reader, GError **error);

#define GAFLIGHT_TYPE_RECORD_BATCH_WRITER (gaflight_record_batch_writer_get_type())
GAFLIGHT_AVAILABLE_IN_18_0
G_DECLARE_DERIVABLE_TYPE(GAFlightRecordBatchWriter,
gaflight_record_batch_writer,
GAFLIGHT,
RECORD_BATCH_WRITER,
GArrowRecordBatchWriter)
struct _GAFlightRecordBatchWriterClass
{
GArrowRecordBatchWriterClass parent_class;
};

GAFLIGHT_AVAILABLE_IN_18_0
gboolean
gaflight_record_batch_writer_begin(GAFlightRecordBatchWriter *writer,
GArrowSchema *schema,
GArrowWriteOptions *options,
GError **error);

GAFLIGHT_AVAILABLE_IN_18_0
gboolean
gaflight_record_batch_writer_write_metadata(GAFlightRecordBatchWriter *writer,
GArrowBuffer *metadata,
GError **error);

GAFLIGHT_AVAILABLE_IN_18_0
gboolean
gaflight_record_batch_writer_write(GAFlightRecordBatchWriter *writer,
GArrowRecordBatch *record_batch,
GArrowBuffer *metadata,
GError **error);

G_END_DECLS
4 changes: 4 additions & 0 deletions c_glib/arrow-flight-glib/common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,7 @@ gaflight_stream_chunk_get_raw(GAFlightStreamChunk *chunk);
GAFLIGHT_EXTERN
arrow::flight::MetadataRecordBatchReader *
gaflight_record_batch_reader_get_raw(GAFlightRecordBatchReader *reader);

GAFLIGHT_EXTERN
arrow::flight::MetadataRecordBatchWriter *
gaflight_record_batch_writer_get_raw(GAFlightRecordBatchWriter *writer);
7 changes: 4 additions & 3 deletions ci/docker/python-wheel-manylinux-test.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
# under the License.

ARG arch
ARG python
FROM ${arch}/python:${python}
ARG python_image_tag
FROM ${arch}/python:${python_image_tag}

# RUN pip install --upgrade pip

Expand All @@ -27,4 +27,5 @@ COPY python/requirements-wheel-test.txt /arrow/python/
RUN pip install -r /arrow/python/requirements-wheel-test.txt

COPY ci/scripts/install_gcs_testbench.sh /arrow/ci/scripts/
RUN PYTHON=python /arrow/ci/scripts/install_gcs_testbench.sh default
ARG python
RUN PYTHON_VERSION=${python} /arrow/ci/scripts/install_gcs_testbench.sh default
2 changes: 1 addition & 1 deletion ci/docker/python-wheel-manylinux.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ RUN vcpkg install \
# Configure Python for applications running in the bash shell of this Dockerfile
ARG python=3.8
ENV PYTHON_VERSION=${python}
RUN PYTHON_ROOT=$(find /opt/python -name cp${PYTHON_VERSION/./}-*) && \
RUN PYTHON_ROOT=$(find /opt/python -name cp${PYTHON_VERSION/./}-cp${PYTHON_VERSION/./}) && \
echo "export PATH=$PYTHON_ROOT/bin:\$PATH" >> /etc/profile.d/python.sh

SHELL ["/bin/bash", "-i", "-c"]
Expand Down
7 changes: 4 additions & 3 deletions ci/docker/python-wheel-windows-test-vs2019.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ ARG python=3.8
RUN (if "%python%"=="3.8" setx PYTHON_VERSION "3.8.10" && setx PATH "%PATH%;C:\Python38;C:\Python38\Scripts") & \
(if "%python%"=="3.9" setx PYTHON_VERSION "3.9.13" && setx PATH "%PATH%;C:\Python39;C:\Python39\Scripts") & \
(if "%python%"=="3.10" setx PYTHON_VERSION "3.10.11" && setx PATH "%PATH%;C:\Python310;C:\Python310\Scripts") & \
(if "%python%"=="3.11" setx PYTHON_VERSION "3.11.5" && setx PATH "%PATH%;C:\Python311;C:\Python311\Scripts") & \
(if "%python%"=="3.12" setx PYTHON_VERSION "3.12.0" && setx PATH "%PATH%;C:\Python312;C:\Python312\Scripts")
(if "%python%"=="3.11" setx PYTHON_VERSION "3.11.9" && setx PATH "%PATH%;C:\Python311;C:\Python311\Scripts") & \
(if "%python%"=="3.12" setx PYTHON_VERSION "3.12.4" && setx PATH "%PATH%;C:\Python312;C:\Python312\Scripts") & \
(if "%python%"=="3.13" setx PYTHON_VERSION "3.13.0-rc1" && setx PATH "%PATH%;C:\Python313;C:\Python313\Scripts")

# Install archiver to extract xz archives
RUN choco install -r -y --no-progress python --version=%PYTHON_VERSION% & \
RUN choco install -r -y --pre --no-progress python --version=%PYTHON_VERSION% & \
python -m pip install --no-cache-dir -U pip setuptools & \
choco install --no-progress -r -y archiver
7 changes: 4 additions & 3 deletions ci/docker/python-wheel-windows-vs2019.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,10 @@ ARG python=3.8
RUN (if "%python%"=="3.8" setx PYTHON_VERSION "3.8.10" && setx PATH "%PATH%;C:\Python38;C:\Python38\Scripts") & \
(if "%python%"=="3.9" setx PYTHON_VERSION "3.9.13" && setx PATH "%PATH%;C:\Python39;C:\Python39\Scripts") & \
(if "%python%"=="3.10" setx PYTHON_VERSION "3.10.11" && setx PATH "%PATH%;C:\Python310;C:\Python310\Scripts") & \
(if "%python%"=="3.11" setx PYTHON_VERSION "3.11.5" && setx PATH "%PATH%;C:\Python311;C:\Python311\Scripts") & \
(if "%python%"=="3.12" setx PYTHON_VERSION "3.12.0" && setx PATH "%PATH%;C:\Python312;C:\Python312\Scripts")
RUN choco install -r -y --no-progress python --version=%PYTHON_VERSION%
(if "%python%"=="3.11" setx PYTHON_VERSION "3.11.9" && setx PATH "%PATH%;C:\Python311;C:\Python311\Scripts") & \
(if "%python%"=="3.12" setx PYTHON_VERSION "3.12.4" && setx PATH "%PATH%;C:\Python312;C:\Python312\Scripts") & \
(if "%python%"=="3.13" setx PYTHON_VERSION "3.13.0-rc1" && setx PATH "%PATH%;C:\Python313;C:\Python313\Scripts")
RUN choco install -r -y --pre --no-progress python --version=%PYTHON_VERSION%
RUN python -m pip install -U pip setuptools

COPY python/requirements-wheel-build.txt arrow/python/
Expand Down
Loading

0 comments on commit 6285806

Please sign in to comment.