<transcript><audio_84>tuples and then we're done in this case since each operator needs to materialize its entire output so the table scan would need to materialize this entire output all at once before moving on to the join part there's no really easy way to push this</transcript><transcript><audio_85>down so you need to kind of uh pass down if you want to do some kind of early implement some kind of early stopping like a limit a limit-based approach then you need to pass down hints through the the operator tree or the query plan tree to make sure that your</transcript><transcript><audio_86>the the the leaf nodes in the query plan know that they can stop stop early um and again there's kind of this this uh difference between uh nsm versus dsm storage so you can either materialize</transcript><transcript><audio_87>like a full row or if for example your your operator is working on an individual column you can just materialize a single column so we'll see some examples of that later but so just visually the way this would look uh</transcript><transcript><audio_88>operator breakdown here but rather than having these next function calls that are going to return a single tuple of time basically each each operator is going to call so the root node here is going to call us childs the join is going to say please give me</transcript><transcript><audio_89>all of your outputs so this is child.output function and then you can iterate over all of the tuples in the uh materialized output so the the root node's going to call the join the join is going to call</transcript><transcript><audio_90>its it's left child here so basically what's happening in this table scan now instead of returning one tuple at a time and and kind of pushing it so it's pipelined all the way through all the operators in the query tree um it's going to to put all of the tuples</transcript> tuples and then we're done in this case since each operator needs to materialize its entire output so the table scan would need to materialize this entire output all at once before moving on to the join part there's no really easy way to push this down so you need to kind of uh pass down if you want to do some kind of early implement some kind of early stopping like a limit a limit-based approach then you need to pass down hints through the the operator tree or the query plan tree to make sure that your the the the leaf nodes in the query plan know that they can stop stop early um and again there's kind of this this uh difference between uh nsm versus dsm storage so you can either materialize like a full row or if for example your your operator is working on an individual column you can just materialize a single column so we'll see some examples of that later but so just visually the way this would look uh operator breakdown here but rather than having these next function calls that are going to return a single tuple of time basically each each operator is going to call so the root node here is going to call us childs the join is going to say please give me all of your outputs so this is child.output function and then you can iterate over all of the tuples in the uh materialized output so the the root node's going to call the join the join is going to call its it's left child here so basically what's happening in this table scan now instead of returning one tuple at a time and and kind of pushing it so it's pipelined all the way through all the operators in the query tree um it's going to to put all of the tuples
{"source": "grass-yt-cc-by.0K0kI1H2KTE|shard_1004_48|create_multimodal_data.extract_yt_and_generate_transcripts.60|shard_1004|create_multimodal_data.generate_captions.50|shard_1004|create_multimodal_data.generate_captions.55", "params": {"id": "0K0kI1H2KTE", "channel_id": "UCHnBsf2rH-K7pn09rb3qvkA", "duration": 4701, "view_count": 4624, "age_limit": 0, "chapters": [{"start_time": 0.0, "title": "Introduction", "end_time": 108.0}, {"start_time": 108.0, "title": "Recap", "end_time": 278.0}, {"start_time": 278.0, "title": "Overview", "end_time": 435.0}, {"start_time": 435.0, "title": "Iterator", "end_time": 709.0}, {"start_time": 709.0, "title": "Runthrough", "end_time": 846.0}, {"start_time": 846.0, "title": "Iterator Approach", "end_time": 1104.0}, {"start_time": 1104.0, "title": "Materialization Approach", "end_time": 1581.0}, {"start_time": 1581.0, "title": "Vectorization Approach", "end_time": 2253.0}, {"start_time": 2253.0, "title": "Vectorization Model", "end_time": 2475.0}, {"start_time": 2475.0, "title": "Query Processing Models", "end_time": 2606.0}, {"start_time": 2606.0, "title": "Access Methods", "end_time": 2701.0}, {"start_time": 2701.0, "title": "Sequential Scan", "end_time": 2796.0}, {"start_time": 2796.0, "title": "Optimizations", "end_time": 2915.0}, {"start_time": 2915.0, "title": "Zone Maps", "end_time": 3180.0}, {"start_time": 3180.0, "title": "Late Materialization", "end_time": 3302.0}, {"start_time": 3302.0, "title": "Index Scan", "end_time": 3388.0}, {"start_time": 3388.0, "title": "Index Scan Example", "end_time": 3507.0}, {"start_time": 3507.0, "title": "Multiindex Scan Example", "end_time": 4701}], "like_count": 46, "channel_follower_count": 71100, "license": "Creative Commons Attribution license (reuse allowed)", "uploader_id": "@CMUDatabaseGroup", "yt_tar_file": "/leonardo_work/EUHPC_E03_068/audio/fixed_download/grass-yt-cc-by//shard_1004/0K0kI1H2KTE.tar.gz"}}