Skip to content

Instantly share code, notes, and snippets.

View masayuki038's full-sized avatar

Masayuki Takahashi masayuki038

View GitHub Profile
@Override
public RelDataType deriveRowType() {
List<RelDataTypeField> fieldList = getTable().getRowType().getFieldList();
RelDataTypeFactory.Builder builder = getCluster().getTypeFactory().builder();
Arrays.stream(fields).forEach(field -> builder.add(fieldList.get(field)));
return builder.build();
}
public class AvroTableScan extends TableScan implements EnumerableRel {
private Integer[] fields;
public class AvroEnumerator implements Enumerator<Object> {
private List<GenericData.Record> records;
private Integer[] fields;
private int pos;
public AvroEnumerator(List<GenericData.Record> records, Integer[] fields) {
this.records = records;
this.fields = fields;
this.pos = -1;
public Enumerable<Object> project(DataContext root, Integer[] fields) {
return new AbstractEnumerable<Object>() {
public Enumerator<Object> enumerator() {
return new AvroEnumerator(records, fields);
}
};
}
@Override
public RelNode toRel(RelOptTable.ToRelContext context, RelOptTable relOptTable) {
int fieldCount = relOptTable.getRowType().getFieldCount();
Integer[] fields = AvroEnumerator.identityList(fieldCount);
return new AvroTableScan(context.getCluster(), relOptTable, fields);
}
@Override
public RelDataType getRowType(RelDataTypeFactory relDataTypeFactory) {
JavaTypeFactory typeFactory = (JavaTypeFactory) relDataTypeFactory;
List<Pair<String, RelDataType>> ret = schema.getFields().stream().map(field -> {
Schema.Type avroFieldType = field.schema().getType();
if (avroFieldType == Schema.Type.UNION) {
avroFieldType = getAvroNullableField(field);
}
RelDataType relDataType = AvroFieldType.of(avroFieldType).toType(typeFactory);
public class AvroSchema extends AbstractSchema {
private Map<String, Table> tableMap;
private File directory;
public AvroSchema(File directory) {
this.directory = directory;
}
@Override
public Map<String, Table> getTableMap() {
package net.wrap_trap.calcite_avro_sample;
import org.apache.calcite.model.ModelHandler;
import org.apache.calcite.schema.Schema;
import org.apache.calcite.schema.SchemaFactory;
import org.apache.calcite.schema.SchemaPlus;
import java.io.File;
import java.util.Map;
@masayuki038
masayuki038 / thread_dump.py
Created October 5, 2019 03:28
Getting thread dump of each process (master / workers) of uWSGI
from time import sleep
import os
import json
import threading
from flask import Flask, jsonify
from uwsgidecorators import postfork
import pystuck
pystuck.run_server(unix_socket='/tmp/utd-master')
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com');
await page.screenshot({path: 'screenshot.png'});
await browser.close();
})();