void parquet_rescan(ParquetScanDesc scan) { CloseScannedFileSeg(scan); scan->initedStorageRoutines = false; ParquetRowGroupReader_FinishedScanRowGroup(&(scan->rowGroupReader)); ParquetStorageRead_FinishSession(&(scan->storageRead)); initscan(scan); }
static void * library(void *arg) { int ret; #ifdef __linux__ struct sched_param param; /* Lower the priority of the thread so forked-daapd may still respond * during library scan on low power devices. Param must be 0 for the SCHED_BATCH * policy. */ memset(¶m, 0, sizeof(struct sched_param)); ret = pthread_setschedparam(pthread_self(), SCHED_BATCH, ¶m); if (ret != 0) { DPRINTF(E_LOG, L_LIB, "Warning: Could not set thread priority to SCHED_BATCH\n"); } #endif ret = db_perthread_init(); if (ret < 0) { DPRINTF(E_LOG, L_LIB, "Error: DB init failed\n"); pthread_exit(NULL); } initscan(); event_base_dispatch(evbase_lib); if (!scan_exit) DPRINTF(E_FATAL, L_LIB, "Scan event loop terminated ahead of time!\n"); db_perthread_deinit(); pthread_exit(NULL); }
int main(int argc, char *argv[]) { int c; char *ptr; ERR_ZERO(&msgset); while ((c = getopt(argc, argv, "abcdeghmprstuvwyzFX:")) != -1) { switch (c) { case 'a': aflag++; break; case 'b': bflag = 1; break; case 'c': cflag = 1; break; case 'd': dflag = 1; break; case 'e': eflag = 1; break; case 'F': Fflag = 1; break; case 'g': gflag = 1; break; case 'h': hflag = 1; break; case 'p': pflag = 1; break; case 'r': rflag = 1; break; case 's': sflag = 1; break; case 't': tflag = 1; break; case 'u': uflag = 0; break; case 'w': wflag = 1; break; case 'v': vflag = 0; break; case 'y': yflag = 1; break; case 'z': zflag = 0; break; case 'm': msglist(); return(0); case 'X': for (ptr = strtok(optarg, ","); ptr; ptr = strtok(NULL, ",")) { char *eptr; long msg = strtol(ptr, &eptr, 0); if ((msg == LONG_MIN || msg == LONG_MAX) && errno == ERANGE) err(1, "invalid error message id '%s'", ptr); if (*eptr || ptr == eptr || msg < 0 || msg >= ERR_SETSIZE) errx(1, "invalid error message id '%s'", ptr); ERR_SET(msg, &msgset); } break; case '?': default: usage(); break; } } argc -= optind; argv += optind; if (argc != 2) usage(); /* open the input file */ if ((yyin = fopen(argv[0], "r")) == NULL) err(1, "cannot open '%s'", argv[0]); /* initialize output */ outopen(argv[1]); if (yflag) yydebug = 1; initmem(); initdecl(); initscan(); initmtab(); yyparse(); /* Following warnings cannot be suppressed by LINTED */ nowarn = 0; chkglsyms(); outclose(); return (nerr != 0); }
/** *begin scanning of a parquet relation */ ParquetScanDesc parquet_beginscan( Relation relation, Snapshot parquetMetaDataSnapshot, TupleDesc relationTupleDesc, bool *proj) { ParquetScanDesc scan; AppendOnlyEntry *aoEntry; AppendOnlyStorageAttributes *attr; /* * increment relation ref count while scanning relation * * This is just to make really sure the relcache entry won't go away while * the scan has a pointer to it. Caller should be holding the rel open * anyway, so this is redundant in all normal scenarios... */ RelationIncrementReferenceCount(relation); /* allocate scan descriptor */ scan = (ParquetScanDescData *)palloc0(sizeof(ParquetScanDescData)); /* * Get the pg_appendonly information for this table */ aoEntry = GetAppendOnlyEntry(RelationGetRelid(relation), parquetMetaDataSnapshot); scan->aoEntry = aoEntry; Assert(aoEntry->majorversion == 1 && aoEntry->minorversion == 0); #ifdef FAULT_INJECTOR FaultInjector_InjectFaultIfSet( FailQeWhenBeginParquetScan, DDLNotSpecified, "", // databaseName ""); // tableName #endif /* * initialize the scan descriptor */ scan->pqs_filenamepath_maxlen = AOSegmentFilePathNameLen(relation) + 1; scan->pqs_filenamepath = (char*)palloc0(scan->pqs_filenamepath_maxlen); scan->pqs_rd = relation; scan->parquetScanInitContext = CurrentMemoryContext; /* * Fill in Parquet Storage layer attributes. */ attr = &scan->storageAttributes; /* * These attributes describe the AppendOnly format to be scanned. */ if (aoEntry->compresstype == NULL || pg_strcasecmp(aoEntry->compresstype, "none") == 0) attr->compress = false; else attr->compress = true; if (aoEntry->compresstype != NULL) attr->compressType = aoEntry->compresstype; else attr->compressType = "none"; attr->compressLevel = aoEntry->compresslevel; attr->checksum = aoEntry->checksum; attr->safeFSWriteSize = aoEntry->safefswritesize; attr->splitsize = aoEntry->splitsize; attr->version = aoEntry->version; AORelationVersion_CheckValid(attr->version); scan->proj = proj; scan->pqs_tupDesc = (relationTupleDesc == NULL) ? RelationGetDescr(relation) : relationTupleDesc; scan->hawqAttrToParquetColChunks = (int*)palloc0(scan->pqs_tupDesc->natts * sizeof(int)); initscan(scan); return scan ; }